From 71b1812bf9a785b66e3f17175580d3d20cea9c0c Mon Sep 17 00:00:00 2001
From: Daiki Ueno <ueno@gnu.org>
Date: Tue, 12 Oct 2021 13:33:31 +0200
Subject: [PATCH] x86: port Intel CET support
Signed-off-by: Daiki Ueno <ueno@gnu.org>
---
lib/accelerated/x86/elf/aes-ssse3-x86.s | 30 ++++++++++++++
lib/accelerated/x86/elf/aes-ssse3-x86_64.s | 26 +++++++++++++
lib/accelerated/x86/elf/aesni-gcm-x86_64.s | 21 ++++++++++
lib/accelerated/x86/elf/aesni-x86.s | 39 +++++++++++++++++++
lib/accelerated/x86/elf/aesni-x86_64.s | 32 +++++++++++++++
lib/accelerated/x86/elf/ghash-x86_64.s | 27 +++++++++++++
lib/accelerated/x86/elf/sha1-ssse3-x86.s | 18 +++++++++
lib/accelerated/x86/elf/sha1-ssse3-x86_64.s | 21 ++++++++++
lib/accelerated/x86/elf/sha256-ssse3-x86.s | 18 +++++++++
lib/accelerated/x86/elf/sha256-ssse3-x86_64.s | 21 ++++++++++
lib/accelerated/x86/elf/sha512-ssse3-x86.s | 18 +++++++++
lib/accelerated/x86/elf/sha512-ssse3-x86_64.s | 21 ++++++++++
12 files changed, 292 insertions(+)
diff --git a/lib/accelerated/x86/elf/aes-ssse3-x86.s b/lib/accelerated/x86/elf/aes-ssse3-x86.s
index 265e28a7ef..7be53059f7 100644
--- a/lib/accelerated/x86/elf/aes-ssse3-x86.s
+++ b/lib/accelerated/x86/elf/aes-ssse3-x86.s
@@ -71,6 +71,7 @@
.type _vpaes_preheat,@function
.align 16
_vpaes_preheat:
+.byte 243,15,30,251
addl (%esp),%ebp
movdqa -48(%ebp),%xmm7
movdqa -16(%ebp),%xmm6
@@ -79,6 +80,7 @@ _vpaes_preheat:
.type _vpaes_encrypt_core,@function
.align 16
_vpaes_encrypt_core:
+.byte 243,15,30,251
movl $16,%ecx
movl 240(%edx),%eax
movdqa %xmm6,%xmm1
@@ -156,6 +158,7 @@ _vpaes_encrypt_core:
.type _vpaes_decrypt_core,@function
.align 16
_vpaes_decrypt_core:
+.byte 243,15,30,251
leal 608(%ebp),%ebx
movl 240(%edx),%eax
movdqa %xmm6,%xmm1
@@ -244,6 +247,7 @@ _vpaes_decrypt_core:
.type _vpaes_schedule_core,@function
.align 16
_vpaes_schedule_core:
+.byte 243,15,30,251
addl (%esp),%ebp
movdqu (%esi),%xmm0
movdqa 320(%ebp),%xmm2
@@ -338,6 +342,7 @@ _vpaes_schedule_core:
.type _vpaes_schedule_192_smear,@function
.align 16
_vpaes_schedule_192_smear:
+.byte 243,15,30,251
pshufd $128,%xmm6,%xmm1
pshufd $254,%xmm7,%xmm0
pxor %xmm1,%xmm6
@@ -350,6 +355,7 @@ _vpaes_schedule_192_smear:
.type _vpaes_schedule_round,@function
.align 16
_vpaes_schedule_round:
+.byte 243,15,30,251
movdqa 8(%esp),%xmm2
pxor %xmm1,%xmm1
.byte 102,15,58,15,202,15
@@ -399,6 +405,7 @@ _vpaes_schedule_round:
.type _vpaes_schedule_transform,@function
.align 16
_vpaes_schedule_transform:
+.byte 243,15,30,251
movdqa -16(%ebp),%xmm2
movdqa %xmm2,%xmm1
pandn %xmm0,%xmm1
@@ -414,6 +421,7 @@ _vpaes_schedule_transform:
.type _vpaes_schedule_mangle,@function
.align 16
_vpaes_schedule_mangle:
+.byte 243,15,30,251
movdqa %xmm0,%xmm4
movdqa 128(%ebp),%xmm5
testl %edi,%edi
@@ -475,6 +483,7 @@ _vpaes_schedule_mangle:
.align 16
vpaes_set_encrypt_key:
.L_vpaes_set_encrypt_key_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -508,6 +517,7 @@ vpaes_set_encrypt_key:
.align 16
vpaes_set_decrypt_key:
.L_vpaes_set_decrypt_key_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -546,6 +556,7 @@ vpaes_set_decrypt_key:
.align 16
vpaes_encrypt:
.L_vpaes_encrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -575,6 +586,7 @@ vpaes_encrypt:
.align 16
vpaes_decrypt:
.L_vpaes_decrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -604,6 +616,7 @@ vpaes_decrypt:
.align 16
vpaes_cbc_encrypt:
.L_vpaes_cbc_encrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -671,4 +684,21 @@ vpaes_cbc_encrypt:
ret
.size vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
+ .section ".note.gnu.property", "a"
+ .p2align 2
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ .asciz "GNU"
+1:
+ .p2align 2
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 2
+4:
+
.section .note.GNU-stack,"",%progbits
diff --git a/lib/accelerated/x86/elf/aes-ssse3-x86_64.s b/lib/accelerated/x86/elf/aes-ssse3-x86_64.s
index ea1216baf7..5a3f336f26 100644
--- a/lib/accelerated/x86/elf/aes-ssse3-x86_64.s
+++ b/lib/accelerated/x86/elf/aes-ssse3-x86_64.s
@@ -635,6 +635,7 @@ _vpaes_schedule_mangle:
.align 16
vpaes_set_encrypt_key:
.cfi_startproc
+.byte 243,15,30,250
movl %esi,%eax
shrl $5,%eax
addl $5,%eax
@@ -653,6 +654,7 @@ vpaes_set_encrypt_key:
.align 16
vpaes_set_decrypt_key:
.cfi_startproc
+.byte 243,15,30,250
movl %esi,%eax
shrl $5,%eax
addl $5,%eax
@@ -676,6 +678,7 @@ vpaes_set_decrypt_key:
.align 16
vpaes_encrypt:
.cfi_startproc
+.byte 243,15,30,250
movdqu (%rdi),%xmm0
call _vpaes_preheat
call _vpaes_encrypt_core
@@ -689,6 +692,7 @@ vpaes_encrypt:
.align 16
vpaes_decrypt:
.cfi_startproc
+.byte 243,15,30,250
movdqu (%rdi),%xmm0
call _vpaes_preheat
call _vpaes_decrypt_core
@@ -701,6 +705,7 @@ vpaes_decrypt:
.align 16
vpaes_cbc_encrypt:
.cfi_startproc
+.byte 243,15,30,250
xchgq %rcx,%rdx
subq $16,%rcx
jc .Lcbc_abort
@@ -863,5 +868,26 @@ _vpaes_consts:
.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0
.align 64
.size _vpaes_consts,.-_vpaes_consts
+ .section ".note.gnu.property", "a"
+ .p2align 3
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ # "GNU" encoded with .byte, since .asciz isn't supported
+ # on Solaris.
+ .byte 0x47
+ .byte 0x4e
+ .byte 0x55
+ .byte 0
+1:
+ .p2align 3
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 3
+4:
.section .note.GNU-stack,"",%progbits
diff --git a/lib/accelerated/x86/elf/aesni-gcm-x86_64.s b/lib/accelerated/x86/elf/aesni-gcm-x86_64.s
index 461dd026b9..ea5398bc2c 100644
--- a/lib/accelerated/x86/elf/aesni-gcm-x86_64.s
+++ b/lib/accelerated/x86/elf/aesni-gcm-x86_64.s
@@ -826,5 +826,26 @@ aesni_gcm_encrypt:
.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.byte 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
.align 64
+ .section ".note.gnu.property", "a"
+ .p2align 3
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ # "GNU" encoded with .byte, since .asciz isn't supported
+ # on Solaris.
+ .byte 0x47
+ .byte 0x4e
+ .byte 0x55
+ .byte 0
+1:
+ .p2align 3
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 3
+4:
.section .note.GNU-stack,"",%progbits
diff --git a/lib/accelerated/x86/elf/aesni-x86.s b/lib/accelerated/x86/elf/aesni-x86.s
index 6e4860209f..f41d5f9ef3 100644
--- a/lib/accelerated/x86/elf/aesni-x86.s
+++ b/lib/accelerated/x86/elf/aesni-x86.s
@@ -43,6 +43,7 @@
.align 16
aesni_encrypt:
.L_aesni_encrypt_begin:
+.byte 243,15,30,251
movl 4(%esp),%eax
movl 12(%esp),%edx
movups (%eax),%xmm2
@@ -70,6 +71,7 @@ aesni_encrypt:
.align 16
aesni_decrypt:
.L_aesni_decrypt_begin:
+.byte 243,15,30,251
movl 4(%esp),%eax
movl 12(%esp),%edx
movups (%eax),%xmm2
@@ -95,6 +97,7 @@ aesni_decrypt:
.type _aesni_encrypt2,@function
.align 16
_aesni_encrypt2:
+.byte 243,15,30,251
movups (%edx),%xmm0
shll $4,%ecx
movups 16(%edx),%xmm1
@@ -122,6 +125,7 @@ _aesni_encrypt2:
.type _aesni_decrypt2,@function
.align 16
_aesni_decrypt2:
+.byte 243,15,30,251
movups (%edx),%xmm0
shll $4,%ecx
movups 16(%edx),%xmm1
@@ -149,6 +153,7 @@ _aesni_decrypt2:
.type _aesni_encrypt3,@function
.align 16
_aesni_encrypt3:
+.byte 243,15,30,251
movups (%edx),%xmm0
shll $4,%ecx
movups 16(%edx),%xmm1
@@ -181,6 +186,7 @@ _aesni_encrypt3:
.type _aesni_decrypt3,@function
.align 16
_aesni_decrypt3:
+.byte 243,15,30,251
movups (%edx),%xmm0
shll $4,%ecx
movups 16(%edx),%xmm1
@@ -213,6 +219,7 @@ _aesni_decrypt3:
.type _aesni_encrypt4,@function
.align 16
_aesni_encrypt4:
+.byte 243,15,30,251
movups (%edx),%xmm0
movups 16(%edx),%xmm1
shll $4,%ecx
@@ -251,6 +258,7 @@ _aesni_encrypt4:
.type _aesni_decrypt4,@function
.align 16
_aesni_decrypt4:
+.byte 243,15,30,251
movups (%edx),%xmm0
movups 16(%edx),%xmm1
shll $4,%ecx
@@ -289,6 +297,7 @@ _aesni_decrypt4:
.type _aesni_encrypt6,@function
.align 16
_aesni_encrypt6:
+.byte 243,15,30,251
movups (%edx),%xmm0
shll $4,%ecx
movups 16(%edx),%xmm1
@@ -343,6 +352,7 @@ _aesni_encrypt6:
.type _aesni_decrypt6,@function
.align 16
_aesni_decrypt6:
+.byte 243,15,30,251
movups (%edx),%xmm0
shll $4,%ecx
movups 16(%edx),%xmm1
@@ -399,6 +409,7 @@ _aesni_decrypt6:
.align 16
aesni_ecb_encrypt:
.L_aesni_ecb_encrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -634,6 +645,7 @@ aesni_ecb_encrypt:
.align 16
aesni_ccm64_encrypt_blocks:
.L_aesni_ccm64_encrypt_blocks_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -722,6 +734,7 @@ aesni_ccm64_encrypt_blocks:
.align 16
aesni_ccm64_decrypt_blocks:
.L_aesni_ccm64_decrypt_blocks_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -845,6 +858,7 @@ aesni_ccm64_decrypt_blocks:
.align 16
aesni_ctr32_encrypt_blocks:
.L_aesni_ctr32_encrypt_blocks_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -1083,6 +1097,7 @@ aesni_ctr32_encrypt_blocks:
.align 16
aesni_xts_encrypt:
.L_aesni_xts_encrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -1443,6 +1458,7 @@ aesni_xts_encrypt:
.align 16
aesni_xts_decrypt:
.L_aesni_xts_decrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -1833,6 +1849,7 @@ aesni_xts_decrypt:
.align 16
aesni_ocb_encrypt:
.L_aesni_ocb_encrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -2228,6 +2245,7 @@ aesni_ocb_encrypt:
.align 16
aesni_ocb_decrypt:
.L_aesni_ocb_decrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -2623,6 +2641,7 @@ aesni_ocb_decrypt:
.align 16
aesni_cbc_encrypt:
.L_aesni_cbc_encrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -2882,6 +2901,7 @@ aesni_cbc_encrypt:
.type _aesni_set_encrypt_key,@function
.align 16
_aesni_set_encrypt_key:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
testl %eax,%eax
@@ -3217,6 +3237,7 @@ _aesni_set_encrypt_key:
.align 16
aesni_set_encrypt_key:
.L_aesni_set_encrypt_key_begin:
+.byte 243,15,30,251
movl 4(%esp),%eax
movl 8(%esp),%ecx
movl 12(%esp),%edx
@@ -3228,6 +3249,7 @@ aesni_set_encrypt_key:
.align 16
aesni_set_decrypt_key:
.L_aesni_set_decrypt_key_begin:
+.byte 243,15,30,251
movl 4(%esp),%eax
movl 8(%esp),%ecx
movl 12(%esp),%edx
@@ -3275,4 +3297,21 @@ aesni_set_decrypt_key:
.byte 115,108,46,111,114,103,62,0
.comm _gnutls_x86_cpuid_s,16,4
+ .section ".note.gnu.property", "a"
+ .p2align 2
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ .asciz "GNU"
+1:
+ .p2align 2
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 2
+4:
+
.section .note.GNU-stack,"",%progbits
diff --git a/lib/accelerated/x86/elf/aesni-x86_64.s b/lib/accelerated/x86/elf/aesni-x86_64.s
index acc7c2c555..e3f9d5a995 100644
--- a/lib/accelerated/x86/elf/aesni-x86_64.s
+++ b/lib/accelerated/x86/elf/aesni-x86_64.s
@@ -44,6 +44,7 @@
.align 16
aesni_encrypt:
.cfi_startproc
+.byte 243,15,30,250
movups (%rdi),%xmm2
movl 240(%rdx),%eax
movups (%rdx),%xmm0
@@ -70,6 +71,7 @@ aesni_encrypt:
.align 16
aesni_decrypt:
.cfi_startproc
+.byte 243,15,30,250
movups (%rdi),%xmm2
movl 240(%rdx),%eax
movups (%rdx),%xmm0
@@ -557,6 +559,7 @@ _aesni_decrypt8:
.align 16
aesni_ecb_encrypt:
.cfi_startproc
+.byte 243,15,30,250
andq $-16,%rdx
jz .Lecb_ret
@@ -901,6 +904,7 @@ aesni_ecb_encrypt:
.align 16
aesni_ccm64_encrypt_blocks:
.cfi_startproc
+.byte 243,15,30,250
movl 240(%rcx),%eax
movdqu (%r8),%xmm6
movdqa .Lincrement64(%rip),%xmm9
@@ -966,6 +970,7 @@ aesni_ccm64_encrypt_blocks:
.align 16
aesni_ccm64_decrypt_blocks:
.cfi_startproc
+.byte 243,15,30,250
movl 240(%rcx),%eax
movups (%r8),%xmm6
movdqu (%r9),%xmm3
@@ -1065,6 +1070,7 @@ aesni_ccm64_decrypt_blocks:
.align 16
aesni_ctr32_encrypt_blocks:
.cfi_startproc
+.byte 243,15,30,250
cmpq $1,%rdx
jne .Lctr32_bulk
@@ -1643,6 +1649,7 @@ aesni_ctr32_encrypt_blocks:
.align 16
aesni_xts_encrypt:
.cfi_startproc
+.byte 243,15,30,250
leaq (%rsp),%r11
.cfi_def_cfa_register %r11
pushq %rbp
@@ -2113,6 +2120,7 @@ aesni_xts_encrypt:
.align 16
aesni_xts_decrypt:
.cfi_startproc
+.byte 243,15,30,250
leaq (%rsp),%r11
.cfi_def_cfa_register %r11
pushq %rbp
@@ -2620,6 +2628,7 @@ aesni_xts_decrypt:
.align 32
aesni_ocb_encrypt:
.cfi_startproc
+.byte 243,15,30,250
leaq (%rsp),%rax
pushq %rbx
.cfi_adjust_cfa_offset 8
@@ -3047,6 +3056,7 @@ __ocb_encrypt1:
.align 32
aesni_ocb_decrypt:
.cfi_startproc
+.byte 243,15,30,250
leaq (%rsp),%rax
pushq %rbx
.cfi_adjust_cfa_offset 8
@@ -3484,6 +3494,7 @@ __ocb_decrypt1:
.align 16
aesni_cbc_encrypt:
.cfi_startproc
+.byte 243,15,30,250
testq %rdx,%rdx
jz .Lcbc_ret
@@ -4511,5 +4522,26 @@ __aesni_set_encrypt_key:
.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
.align 64
+ .section ".note.gnu.property", "a"
+ .p2align 3
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ # "GNU" encoded with .byte, since .asciz isn't supported
+ # on Solaris.
+ .byte 0x47
+ .byte 0x4e
+ .byte 0x55
+ .byte 0
+1:
+ .p2align 3
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 3
+4:
.section .note.GNU-stack,"",%progbits
diff --git a/lib/accelerated/x86/elf/ghash-x86_64.s b/lib/accelerated/x86/elf/ghash-x86_64.s
index 1e4d18b341..8da3f294c7 100644
--- a/lib/accelerated/x86/elf/ghash-x86_64.s
+++ b/lib/accelerated/x86/elf/ghash-x86_64.s
@@ -45,6 +45,7 @@
.align 16
gcm_gmult_4bit:
.cfi_startproc
+.byte 243,15,30,250
pushq %rbx
.cfi_adjust_cfa_offset 8
.cfi_offset %rbx,-16
@@ -156,6 +157,7 @@ gcm_gmult_4bit:
.align 16
gcm_ghash_4bit:
.cfi_startproc
+.byte 243,15,30,250
pushq %rbx
.cfi_adjust_cfa_offset 8
.cfi_offset %rbx,-16
@@ -903,6 +905,7 @@ gcm_init_clmul:
.align 16
gcm_gmult_clmul:
.cfi_startproc
+.byte 243,15,30,250
.L_gmult_clmul:
movdqu (%rdi),%xmm0
movdqa .Lbswap_mask(%rip),%xmm5
@@ -956,6 +959,7 @@ gcm_gmult_clmul:
.align 32
gcm_ghash_clmul:
.cfi_startproc
+.byte 243,15,30,250
.L_ghash_clmul:
movdqa .Lbswap_mask(%rip),%xmm10
@@ -1450,6 +1454,7 @@ gcm_init_avx:
.align 32
gcm_gmult_avx:
.cfi_startproc
+.byte 243,15,30,250
jmp .L_gmult_clmul
.cfi_endproc
.size gcm_gmult_avx,.-gcm_gmult_avx
@@ -1458,6 +1463,7 @@ gcm_gmult_avx:
.align 32
gcm_ghash_avx:
.cfi_startproc
+.byte 243,15,30,250
vzeroupper
vmovdqu (%rdi),%xmm10
@@ -1884,5 +1890,26 @@ gcm_ghash_avx:
.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
.align 64
+ .section ".note.gnu.property", "a"
+ .p2align 3
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ # "GNU" encoded with .byte, since .asciz isn't supported
+ # on Solaris.
+ .byte 0x47
+ .byte 0x4e
+ .byte 0x55
+ .byte 0
+1:
+ .p2align 3
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 3
+4:
.section .note.GNU-stack,"",%progbits
diff --git a/lib/accelerated/x86/elf/sha1-ssse3-x86.s b/lib/accelerated/x86/elf/sha1-ssse3-x86.s
index 8bfbcb6b39..57b6ba58f6 100644
--- a/lib/accelerated/x86/elf/sha1-ssse3-x86.s
+++ b/lib/accelerated/x86/elf/sha1-ssse3-x86.s
@@ -43,6 +43,7 @@
.align 16
sha1_block_data_order:
.L_sha1_block_data_order_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -1417,4 +1418,21 @@ sha1_block_data_order:
.byte 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
.byte 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
+ .section ".note.gnu.property", "a"
+ .p2align 2
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ .asciz "GNU"
+1:
+ .p2align 2
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 2
+4:
+
.section .note.GNU-stack,"",%progbits
diff --git a/lib/accelerated/x86/elf/sha1-ssse3-x86_64.s b/lib/accelerated/x86/elf/sha1-ssse3-x86_64.s
index d34f34497c..54095050c8 100644
--- a/lib/accelerated/x86/elf/sha1-ssse3-x86_64.s
+++ b/lib/accelerated/x86/elf/sha1-ssse3-x86_64.s
@@ -5487,5 +5487,26 @@ K_XX_XX:
.byte 0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
.byte 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
.align 64
+ .section ".note.gnu.property", "a"
+ .p2align 3
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ # "GNU" encoded with .byte, since .asciz isn't supported
+ # on Solaris.
+ .byte 0x47
+ .byte 0x4e
+ .byte 0x55
+ .byte 0
+1:
+ .p2align 3
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 3
+4:
.section .note.GNU-stack,"",%progbits
diff --git a/lib/accelerated/x86/elf/sha256-ssse3-x86.s b/lib/accelerated/x86/elf/sha256-ssse3-x86.s
index 8d9aaa4a81..6d16b9140e 100644
--- a/lib/accelerated/x86/elf/sha256-ssse3-x86.s
+++ b/lib/accelerated/x86/elf/sha256-ssse3-x86.s
@@ -43,6 +43,7 @@
.align 16
sha256_block_data_order:
.L_sha256_block_data_order_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -3384,4 +3385,21 @@ sha256_block_data_order:
ret
.size sha256_block_data_order,.-.L_sha256_block_data_order_begin
+ .section ".note.gnu.property", "a"
+ .p2align 2
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ .asciz "GNU"
+1:
+ .p2align 2
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 2
+4:
+
.section .note.GNU-stack,"",%progbits
diff --git a/lib/accelerated/x86/elf/sha256-ssse3-x86_64.s b/lib/accelerated/x86/elf/sha256-ssse3-x86_64.s
index d196c6a793..1514ee45c0 100644
--- a/lib/accelerated/x86/elf/sha256-ssse3-x86_64.s
+++ b/lib/accelerated/x86/elf/sha256-ssse3-x86_64.s
@@ -5493,5 +5493,26 @@ sha256_block_data_order_avx2:
.byte 0xf3,0xc3
.cfi_endproc
.size sha256_block_data_order_avx2,.-sha256_block_data_order_avx2
+ .section ".note.gnu.property", "a"
+ .p2align 3
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ # "GNU" encoded with .byte, since .asciz isn't supported
+ # on Solaris.
+ .byte 0x47
+ .byte 0x4e
+ .byte 0x55
+ .byte 0
+1:
+ .p2align 3
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 3
+4:
.section .note.GNU-stack,"",%progbits
diff --git a/lib/accelerated/x86/elf/sha512-ssse3-x86.s b/lib/accelerated/x86/elf/sha512-ssse3-x86.s
index 481c777154..afca4eae7b 100644
--- a/lib/accelerated/x86/elf/sha512-ssse3-x86.s
+++ b/lib/accelerated/x86/elf/sha512-ssse3-x86.s
@@ -43,6 +43,7 @@
.align 16
sha512_block_data_order:
.L_sha512_block_data_order_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -602,4 +603,21 @@ sha512_block_data_order:
.byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
.byte 62,0
+ .section ".note.gnu.property", "a"
+ .p2align 2
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ .asciz "GNU"
+1:
+ .p2align 2
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 2
+4:
+
.section .note.GNU-stack,"",%progbits
diff --git a/lib/accelerated/x86/elf/sha512-ssse3-x86_64.s b/lib/accelerated/x86/elf/sha512-ssse3-x86_64.s
index 446c06a3e6..a7be2cd444 100644
--- a/lib/accelerated/x86/elf/sha512-ssse3-x86_64.s
+++ b/lib/accelerated/x86/elf/sha512-ssse3-x86_64.s
@@ -5498,5 +5498,26 @@ sha512_block_data_order_avx2:
.byte 0xf3,0xc3
.cfi_endproc
.size sha512_block_data_order_avx2,.-sha512_block_data_order_avx2
+ .section ".note.gnu.property", "a"
+ .p2align 3
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ # "GNU" encoded with .byte, since .asciz isn't supported
+ # on Solaris.
+ .byte 0x47
+ .byte 0x4e
+ .byte 0x55
+ .byte 0
+1:
+ .p2align 3
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 3
+4:
.section .note.GNU-stack,"",%progbits
--
2.31.1
diff --git a/lib/accelerated/x86/elf/e_padlock-x86.s b/lib/accelerated/x86/elf/e_padlock-x86.s
index ed8681ee4..dd56518f6 100644
--- a/lib/accelerated/x86/elf/e_padlock-x86.s
+++ b/lib/accelerated/x86/elf/e_padlock-x86.s
@@ -1,4 +1,4 @@
-# Copyright (c) 2011-2013, Andy Polyakov <appro@openssl.org>
+# Copyright (c) 2011-2016, Andy Polyakov <appro@openssl.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -37,13 +37,13 @@
#
# *** This file is auto-generated ***
#
-.file "devel/perlasm/e_padlock-x86.s"
.text
.globl padlock_capability
.type padlock_capability,@function
.align 16
padlock_capability:
.L_padlock_capability_begin:
+.byte 243,15,30,251
pushl %ebx
pushfl
popl %eax
@@ -60,11 +60,20 @@ padlock_capability:
.byte 0x0f,0xa2
xorl %eax,%eax
cmpl $0x746e6543,%ebx
- jne .L000noluck
+ jne .L001zhaoxin
cmpl $0x48727561,%edx
jne .L000noluck
cmpl $0x736c7561,%ecx
jne .L000noluck
+ jmp .L002zhaoxinEnd
+.L001zhaoxin:
+ cmpl $0x68532020,%ebx
+ jne .L000noluck
+ cmpl $0x68676e61,%edx
+ jne .L000noluck
+ cmpl $0x20206961,%ecx
+ jne .L000noluck
+.L002zhaoxinEnd:
movl $3221225472,%eax
.byte 0x0f,0xa2
movl %eax,%edx
@@ -95,15 +104,16 @@ padlock_capability:
.align 16
padlock_key_bswap:
.L_padlock_key_bswap_begin:
+.byte 243,15,30,251
movl 4(%esp),%edx
movl 240(%edx),%ecx
-.L001bswap_loop:
+.L003bswap_loop:
movl (%edx),%eax
bswap %eax
movl %eax,(%edx)
leal 4(%edx),%edx
subl $1,%ecx
- jnz .L001bswap_loop
+ jnz .L003bswap_loop
ret
.size padlock_key_bswap,.-.L_padlock_key_bswap_begin
.globl padlock_verify_context
@@ -111,25 +121,27 @@ padlock_key_bswap:
.align 16
padlock_verify_context:
.L_padlock_verify_context_begin:
+.byte 243,15,30,251
movl 4(%esp),%edx
- leal .Lpadlock_saved_context-.L002verify_pic_point,%eax
+ leal .Lpadlock_saved_context-.L004verify_pic_point,%eax
pushfl
call _padlock_verify_ctx
-.L002verify_pic_point:
+.L004verify_pic_point:
leal 4(%esp),%esp
ret
.size padlock_verify_context,.-.L_padlock_verify_context_begin
.type _padlock_verify_ctx,@function
.align 16
_padlock_verify_ctx:
+.byte 243,15,30,251
addl (%esp),%eax
btl $30,4(%esp)
- jnc .L003verified
+ jnc .L005verified
cmpl (%eax),%edx
- je .L003verified
+ je .L005verified
pushfl
popfl
-.L003verified:
+.L005verified:
movl %edx,(%eax)
ret
.size _padlock_verify_ctx,.-_padlock_verify_ctx
@@ -138,6 +150,7 @@ _padlock_verify_ctx:
.align 16
padlock_reload_key:
.L_padlock_reload_key_begin:
+.byte 243,15,30,251
pushfl
popfl
ret
@@ -147,6 +160,7 @@ padlock_reload_key:
.align 16
padlock_aes_block:
.L_padlock_aes_block_begin:
+.byte 243,15,30,251
pushl %edi
pushl %esi
pushl %ebx
@@ -167,6 +181,7 @@ padlock_aes_block:
.align 16
padlock_ecb_encrypt:
.L_padlock_ecb_encrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -176,25 +191,25 @@ padlock_ecb_encrypt:
movl 28(%esp),%edx
movl 32(%esp),%ecx
testl $15,%edx
- jnz .L004ecb_abort
+ jnz .L006ecb_abort
testl $15,%ecx
- jnz .L004ecb_abort
- leal .Lpadlock_saved_context-.L005ecb_pic_point,%eax
+ jnz .L006ecb_abort
+ leal .Lpadlock_saved_context-.L007ecb_pic_point,%eax
pushfl
cld
call _padlock_verify_ctx
-.L005ecb_pic_point:
+.L007ecb_pic_point:
leal 16(%edx),%edx
xorl %eax,%eax
xorl %ebx,%ebx
testl $32,(%edx)
- jnz .L006ecb_aligned
+ jnz .L008ecb_aligned
testl $15,%edi
setz %al
testl $15,%esi
setz %bl
testl %ebx,%eax
- jnz .L006ecb_aligned
+ jnz .L008ecb_aligned
negl %eax
movl $512,%ebx
notl %eax
@@ -213,7 +228,7 @@ padlock_ecb_encrypt:
andl $-16,%esp
movl %eax,16(%ebp)
cmpl %ebx,%ecx
- ja .L007ecb_loop
+ ja .L009ecb_loop
movl %esi,%eax
cmpl %esp,%ebp
cmovel %edi,%eax
@@ -224,10 +239,10 @@ padlock_ecb_encrypt:
movl $-128,%eax
cmovael %ebx,%eax
andl %eax,%ebx
- jz .L008ecb_unaligned_tail
- jmp .L007ecb_loop
+ jz .L010ecb_unaligned_tail
+ jmp .L009ecb_loop
.align 16
-.L007ecb_loop:
+.L009ecb_loop:
movl %edi,(%ebp)
movl %esi,4(%ebp)
movl %ecx,8(%ebp)
@@ -236,13 +251,13 @@ padlock_ecb_encrypt:
testl $15,%edi
cmovnzl %esp,%edi
testl $15,%esi
- jz .L009ecb_inp_aligned
+ jz .L011ecb_inp_aligned
shrl $2,%ecx
.byte 243,165
subl %ebx,%edi
movl %ebx,%ecx
movl %edi,%esi
-.L009ecb_inp_aligned:
+.L011ecb_inp_aligned:
leal -16(%edx),%eax
leal 16(%edx),%ebx
shrl $4,%ecx
@@ -250,23 +265,23 @@ padlock_ecb_encrypt:
movl (%ebp),%edi
movl 12(%ebp),%ebx
testl $15,%edi
- jz .L010ecb_out_aligned
+ jz .L012ecb_out_aligned
movl %ebx,%ecx
leal (%esp),%esi
shrl $2,%ecx
.byte 243,165
subl %ebx,%edi
-.L010ecb_out_aligned:
+.L012ecb_out_aligned:
movl 4(%ebp),%esi
movl 8(%ebp),%ecx
addl %ebx,%edi
addl %ebx,%esi
subl %ebx,%ecx
movl $512,%ebx
- jz .L011ecb_break
+ jz .L013ecb_break
cmpl %ebx,%ecx
- jae .L007ecb_loop
-.L008ecb_unaligned_tail:
+ jae .L009ecb_loop
+.L010ecb_unaligned_tail:
xorl %eax,%eax
cmpl %ebp,%esp
cmovel %ecx,%eax
@@ -279,24 +294,24 @@ padlock_ecb_encrypt:
movl %esp,%esi
movl %eax,%edi
movl %ebx,%ecx
- jmp .L007ecb_loop
+ jmp .L009ecb_loop
.align 16
-.L011ecb_break:
+.L013ecb_break:
cmpl %ebp,%esp
- je .L012ecb_done
+ je .L014ecb_done
pxor %xmm0,%xmm0
leal (%esp),%eax
-.L013ecb_bzero:
+.L015ecb_bzero:
movaps %xmm0,(%eax)
leal 16(%eax),%eax
cmpl %eax,%ebp
- ja .L013ecb_bzero
-.L012ecb_done:
+ ja .L015ecb_bzero
+.L014ecb_done:
movl 16(%ebp),%ebp
leal 24(%ebp),%esp
- jmp .L014ecb_exit
+ jmp .L016ecb_exit
.align 16
-.L006ecb_aligned:
+.L008ecb_aligned:
leal (%esi,%ecx,1),%ebp
negl %ebp
andl $4095,%ebp
@@ -306,14 +321,14 @@ padlock_ecb_encrypt:
cmovael %eax,%ebp
andl %ecx,%ebp
subl %ebp,%ecx
- jz .L015ecb_aligned_tail
+ jz .L017ecb_aligned_tail
leal -16(%edx),%eax
leal 16(%edx),%ebx
shrl $4,%ecx
.byte 243,15,167,200
testl %ebp,%ebp
- jz .L014ecb_exit
-.L015ecb_aligned_tail:
+ jz .L016ecb_exit
+.L017ecb_aligned_tail:
movl %ebp,%ecx
leal -24(%esp),%ebp
movl %ebp,%esp
@@ -330,11 +345,11 @@ padlock_ecb_encrypt:
movl %esp,%esi
movl %eax,%edi
movl %ebx,%ecx
- jmp .L007ecb_loop
-.L014ecb_exit:
+ jmp .L009ecb_loop
+.L016ecb_exit:
movl $1,%eax
leal 4(%esp),%esp
-.L004ecb_abort:
+.L006ecb_abort:
popl %edi
popl %esi
popl %ebx
@@ -346,6 +361,7 @@ padlock_ecb_encrypt:
.align 16
padlock_cbc_encrypt:
.L_padlock_cbc_encrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -355,25 +371,25 @@ padlock_cbc_encrypt:
movl 28(%esp),%edx
movl 32(%esp),%ecx
testl $15,%edx
- jnz .L016cbc_abort
+ jnz .L018cbc_abort
testl $15,%ecx
- jnz .L016cbc_abort
- leal .Lpadlock_saved_context-.L017cbc_pic_point,%eax
+ jnz .L018cbc_abort
+ leal .Lpadlock_saved_context-.L019cbc_pic_point,%eax
pushfl
cld
call _padlock_verify_ctx
-.L017cbc_pic_point:
+.L019cbc_pic_point:
leal 16(%edx),%edx
xorl %eax,%eax
xorl %ebx,%ebx
testl $32,(%edx)
- jnz .L018cbc_aligned
+ jnz .L020cbc_aligned
testl $15,%edi
setz %al
testl $15,%esi
setz %bl
testl %ebx,%eax
- jnz .L018cbc_aligned
+ jnz .L020cbc_aligned
negl %eax
movl $512,%ebx
notl %eax
@@ -392,7 +408,7 @@ padlock_cbc_encrypt:
andl $-16,%esp
movl %eax,16(%ebp)
cmpl %ebx,%ecx
- ja .L019cbc_loop
+ ja .L021cbc_loop
movl %esi,%eax
cmpl %esp,%ebp
cmovel %edi,%eax
@@ -403,10 +419,10 @@ padlock_cbc_encrypt:
movl $-64,%eax
cmovael %ebx,%eax
andl %eax,%ebx
- jz .L020cbc_unaligned_tail
- jmp .L019cbc_loop
+ jz .L022cbc_unaligned_tail
+ jmp .L021cbc_loop
.align 16
-.L019cbc_loop:
+.L021cbc_loop:
movl %edi,(%ebp)
movl %esi,4(%ebp)
movl %ecx,8(%ebp)
@@ -415,13 +431,13 @@ padlock_cbc_encrypt:
testl $15,%edi
cmovnzl %esp,%edi
testl $15,%esi
- jz .L021cbc_inp_aligned
+ jz .L023cbc_inp_aligned
shrl $2,%ecx
.byte 243,165
subl %ebx,%edi
movl %ebx,%ecx
movl %edi,%esi
-.L021cbc_inp_aligned:
+.L023cbc_inp_aligned:
leal -16(%edx),%eax
leal 16(%edx),%ebx
shrl $4,%ecx
@@ -431,23 +447,23 @@ padlock_cbc_encrypt:
movl (%ebp),%edi
movl 12(%ebp),%ebx
testl $15,%edi
- jz .L022cbc_out_aligned
+ jz .L024cbc_out_aligned
movl %ebx,%ecx
leal (%esp),%esi
shrl $2,%ecx
.byte 243,165
subl %ebx,%edi
-.L022cbc_out_aligned:
+.L024cbc_out_aligned:
movl 4(%ebp),%esi
movl 8(%ebp),%ecx
addl %ebx,%edi
addl %ebx,%esi
subl %ebx,%ecx
movl $512,%ebx
- jz .L023cbc_break
+ jz .L025cbc_break
cmpl %ebx,%ecx
- jae .L019cbc_loop
-.L020cbc_unaligned_tail:
+ jae .L021cbc_loop
+.L022cbc_unaligned_tail:
xorl %eax,%eax
cmpl %ebp,%esp
cmovel %ecx,%eax
@@ -460,24 +476,24 @@ padlock_cbc_encrypt:
movl %esp,%esi
movl %eax,%edi
movl %ebx,%ecx
- jmp .L019cbc_loop
+ jmp .L021cbc_loop
.align 16
-.L023cbc_break:
+.L025cbc_break:
cmpl %ebp,%esp
- je .L024cbc_done
+ je .L026cbc_done
pxor %xmm0,%xmm0
leal (%esp),%eax
-.L025cbc_bzero:
+.L027cbc_bzero:
movaps %xmm0,(%eax)
leal 16(%eax),%eax
cmpl %eax,%ebp
- ja .L025cbc_bzero
-.L024cbc_done:
+ ja .L027cbc_bzero
+.L026cbc_done:
movl 16(%ebp),%ebp
leal 24(%ebp),%esp
- jmp .L026cbc_exit
+ jmp .L028cbc_exit
.align 16
-.L018cbc_aligned:
+.L020cbc_aligned:
leal (%esi,%ecx,1),%ebp
negl %ebp
andl $4095,%ebp
@@ -487,7 +503,7 @@ padlock_cbc_encrypt:
cmovael %eax,%ebp
andl %ecx,%ebp
subl %ebp,%ecx
- jz .L027cbc_aligned_tail
+ jz .L029cbc_aligned_tail
leal -16(%edx),%eax
leal 16(%edx),%ebx
shrl $4,%ecx
@@ -495,8 +511,8 @@ padlock_cbc_encrypt:
movaps (%eax),%xmm0
movaps %xmm0,-16(%edx)
testl %ebp,%ebp
- jz .L026cbc_exit
-.L027cbc_aligned_tail:
+ jz .L028cbc_exit
+.L029cbc_aligned_tail:
movl %ebp,%ecx
leal -24(%esp),%ebp
movl %ebp,%esp
@@ -513,11 +529,11 @@ padlock_cbc_encrypt:
movl %esp,%esi
movl %eax,%edi
movl %ebx,%ecx
- jmp .L019cbc_loop
-.L026cbc_exit:
+ jmp .L021cbc_loop
+.L028cbc_exit:
movl $1,%eax
leal 4(%esp),%esp
-.L016cbc_abort:
+.L018cbc_abort:
popl %edi
popl %esi
popl %ebx
@@ -529,6 +545,7 @@ padlock_cbc_encrypt:
.align 16
padlock_cfb_encrypt:
.L_padlock_cfb_encrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -538,25 +555,25 @@ padlock_cfb_encrypt:
movl 28(%esp),%edx
movl 32(%esp),%ecx
testl $15,%edx
- jnz .L028cfb_abort
+ jnz .L030cfb_abort
testl $15,%ecx
- jnz .L028cfb_abort
- leal .Lpadlock_saved_context-.L029cfb_pic_point,%eax
+ jnz .L030cfb_abort
+ leal .Lpadlock_saved_context-.L031cfb_pic_point,%eax
pushfl
cld
call _padlock_verify_ctx
-.L029cfb_pic_point:
+.L031cfb_pic_point:
leal 16(%edx),%edx
xorl %eax,%eax
xorl %ebx,%ebx
testl $32,(%edx)
- jnz .L030cfb_aligned
+ jnz .L032cfb_aligned
testl $15,%edi
setz %al
testl $15,%esi
setz %bl
testl %ebx,%eax
- jnz .L030cfb_aligned
+ jnz .L032cfb_aligned
negl %eax
movl $512,%ebx
notl %eax
@@ -574,9 +591,9 @@ padlock_cfb_encrypt:
andl $-16,%ebp
andl $-16,%esp
movl %eax,16(%ebp)
- jmp .L031cfb_loop
+ jmp .L033cfb_loop
.align 16
-.L031cfb_loop:
+.L033cfb_loop:
movl %edi,(%ebp)
movl %esi,4(%ebp)
movl %ecx,8(%ebp)
@@ -585,13 +602,13 @@ padlock_cfb_encrypt:
testl $15,%edi
cmovnzl %esp,%edi
testl $15,%esi
- jz .L032cfb_inp_aligned
+ jz .L034cfb_inp_aligned
shrl $2,%ecx
.byte 243,165
subl %ebx,%edi
movl %ebx,%ecx
movl %edi,%esi
-.L032cfb_inp_aligned:
+.L034cfb_inp_aligned:
leal -16(%edx),%eax
leal 16(%edx),%ebx
shrl $4,%ecx
@@ -601,45 +618,45 @@ padlock_cfb_encrypt:
movl (%ebp),%edi
movl 12(%ebp),%ebx
testl $15,%edi
- jz .L033cfb_out_aligned
+ jz .L035cfb_out_aligned
movl %ebx,%ecx
leal (%esp),%esi
shrl $2,%ecx
.byte 243,165
subl %ebx,%edi
-.L033cfb_out_aligned:
+.L035cfb_out_aligned:
movl 4(%ebp),%esi
movl 8(%ebp),%ecx
addl %ebx,%edi
addl %ebx,%esi
subl %ebx,%ecx
movl $512,%ebx
- jnz .L031cfb_loop
+ jnz .L033cfb_loop
cmpl %ebp,%esp
- je .L034cfb_done
+ je .L036cfb_done
pxor %xmm0,%xmm0
leal (%esp),%eax
-.L035cfb_bzero:
+.L037cfb_bzero:
movaps %xmm0,(%eax)
leal 16(%eax),%eax
cmpl %eax,%ebp
- ja .L035cfb_bzero
-.L034cfb_done:
+ ja .L037cfb_bzero
+.L036cfb_done:
movl 16(%ebp),%ebp
leal 24(%ebp),%esp
- jmp .L036cfb_exit
+ jmp .L038cfb_exit
.align 16
-.L030cfb_aligned:
+.L032cfb_aligned:
leal -16(%edx),%eax
leal 16(%edx),%ebx
shrl $4,%ecx
.byte 243,15,167,224
movaps (%eax),%xmm0
movaps %xmm0,-16(%edx)
-.L036cfb_exit:
+.L038cfb_exit:
movl $1,%eax
leal 4(%esp),%esp
-.L028cfb_abort:
+.L030cfb_abort:
popl %edi
popl %esi
popl %ebx
@@ -651,6 +668,7 @@ padlock_cfb_encrypt:
.align 16
padlock_ofb_encrypt:
.L_padlock_ofb_encrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -660,25 +678,25 @@ padlock_ofb_encrypt:
movl 28(%esp),%edx
movl 32(%esp),%ecx
testl $15,%edx
- jnz .L037ofb_abort
+ jnz .L039ofb_abort
testl $15,%ecx
- jnz .L037ofb_abort
- leal .Lpadlock_saved_context-.L038ofb_pic_point,%eax
+ jnz .L039ofb_abort
+ leal .Lpadlock_saved_context-.L040ofb_pic_point,%eax
pushfl
cld
call _padlock_verify_ctx
-.L038ofb_pic_point:
+.L040ofb_pic_point:
leal 16(%edx),%edx
xorl %eax,%eax
xorl %ebx,%ebx
testl $32,(%edx)
- jnz .L039ofb_aligned
+ jnz .L041ofb_aligned
testl $15,%edi
setz %al
testl $15,%esi
setz %bl
testl %ebx,%eax
- jnz .L039ofb_aligned
+ jnz .L041ofb_aligned
negl %eax
movl $512,%ebx
notl %eax
@@ -696,9 +714,9 @@ padlock_ofb_encrypt:
andl $-16,%ebp
andl $-16,%esp
movl %eax,16(%ebp)
- jmp .L040ofb_loop
+ jmp .L042ofb_loop
.align 16
-.L040ofb_loop:
+.L042ofb_loop:
movl %edi,(%ebp)
movl %esi,4(%ebp)
movl %ecx,8(%ebp)
@@ -707,13 +725,13 @@ padlock_ofb_encrypt:
testl $15,%edi
cmovnzl %esp,%edi
testl $15,%esi
- jz .L041ofb_inp_aligned
+ jz .L043ofb_inp_aligned
shrl $2,%ecx
.byte 243,165
subl %ebx,%edi
movl %ebx,%ecx
movl %edi,%esi
-.L041ofb_inp_aligned:
+.L043ofb_inp_aligned:
leal -16(%edx),%eax
leal 16(%edx),%ebx
shrl $4,%ecx
@@ -723,45 +741,45 @@ padlock_ofb_encrypt:
movl (%ebp),%edi
movl 12(%ebp),%ebx
testl $15,%edi
- jz .L042ofb_out_aligned
+ jz .L044ofb_out_aligned
movl %ebx,%ecx
leal (%esp),%esi
shrl $2,%ecx
.byte 243,165
subl %ebx,%edi
-.L042ofb_out_aligned:
+.L044ofb_out_aligned:
movl 4(%ebp),%esi
movl 8(%ebp),%ecx
addl %ebx,%edi
addl %ebx,%esi
subl %ebx,%ecx
movl $512,%ebx
- jnz .L040ofb_loop
+ jnz .L042ofb_loop
cmpl %ebp,%esp
- je .L043ofb_done
+ je .L045ofb_done
pxor %xmm0,%xmm0
leal (%esp),%eax
-.L044ofb_bzero:
+.L046ofb_bzero:
movaps %xmm0,(%eax)
leal 16(%eax),%eax
cmpl %eax,%ebp
- ja .L044ofb_bzero
-.L043ofb_done:
+ ja .L046ofb_bzero
+.L045ofb_done:
movl 16(%ebp),%ebp
leal 24(%ebp),%esp
- jmp .L045ofb_exit
+ jmp .L047ofb_exit
.align 16
-.L039ofb_aligned:
+.L041ofb_aligned:
leal -16(%edx),%eax
leal 16(%edx),%ebx
shrl $4,%ecx
.byte 243,15,167,232
movaps (%eax),%xmm0
movaps %xmm0,-16(%edx)
-.L045ofb_exit:
+.L047ofb_exit:
movl $1,%eax
leal 4(%esp),%esp
-.L037ofb_abort:
+.L039ofb_abort:
popl %edi
popl %esi
popl %ebx
@@ -773,6 +791,7 @@ padlock_ofb_encrypt:
.align 16
padlock_ctr32_encrypt:
.L_padlock_ctr32_encrypt_begin:
+.byte 243,15,30,251
pushl %ebp
pushl %ebx
pushl %esi
@@ -782,14 +801,14 @@ padlock_ctr32_encrypt:
movl 28(%esp),%edx
movl 32(%esp),%ecx
testl $15,%edx
- jnz .L046ctr32_abort
+ jnz .L048ctr32_abort
testl $15,%ecx
- jnz .L046ctr32_abort
- leal .Lpadlock_saved_context-.L047ctr32_pic_point,%eax
+ jnz .L048ctr32_abort
+ leal .Lpadlock_saved_context-.L049ctr32_pic_point,%eax
pushfl
cld
call _padlock_verify_ctx
-.L047ctr32_pic_point:
+.L049ctr32_pic_point:
leal 16(%edx),%edx
xorl %eax,%eax
movq -16(%edx),%mm0
@@ -809,9 +828,9 @@ padlock_ctr32_encrypt:
andl $-16,%ebp
andl $-16,%esp
movl %eax,16(%ebp)
- jmp .L048ctr32_loop
+ jmp .L050ctr32_loop
.align 16
-.L048ctr32_loop:
+.L050ctr32_loop:
movl %edi,(%ebp)
movl %esi,4(%ebp)
movl %ecx,8(%ebp)
@@ -820,7 +839,7 @@ padlock_ctr32_encrypt:
movl -4(%edx),%ecx
xorl %edi,%edi
movl -8(%edx),%eax
-.L049ctr32_prepare:
+.L051ctr32_prepare:
movl %ecx,12(%esp,%edi,1)
bswap %ecx
movq %mm0,(%esp,%edi,1)
@@ -829,7 +848,7 @@ padlock_ctr32_encrypt:
bswap %ecx
leal 16(%edi),%edi
cmpl %ebx,%edi
- jb .L049ctr32_prepare
+ jb .L051ctr32_prepare
movl %ecx,-4(%edx)
leal (%esp),%esi
leal (%esp),%edi
@@ -842,33 +861,33 @@ padlock_ctr32_encrypt:
movl 12(%ebp),%ebx
movl 4(%ebp),%esi
xorl %ecx,%ecx
-.L050ctr32_xor:
+.L052ctr32_xor:
movups (%esi,%ecx,1),%xmm1
leal 16(%ecx),%ecx
pxor -16(%esp,%ecx,1),%xmm1
movups %xmm1,-16(%edi,%ecx,1)
cmpl %ebx,%ecx
- jb .L050ctr32_xor
+ jb .L052ctr32_xor
movl 8(%ebp),%ecx
addl %ebx,%edi
addl %ebx,%esi
subl %ebx,%ecx
movl $512,%ebx
- jnz .L048ctr32_loop
+ jnz .L050ctr32_loop
pxor %xmm0,%xmm0
leal (%esp),%eax
-.L051ctr32_bzero:
+.L053ctr32_bzero:
movaps %xmm0,(%eax)
leal 16(%eax),%eax
cmpl %eax,%ebp
- ja .L051ctr32_bzero
-.L052ctr32_done:
+ ja .L053ctr32_bzero
+.L054ctr32_done:
movl 16(%ebp),%ebp
leal 24(%ebp),%esp
movl $1,%eax
leal 4(%esp),%esp
emms
-.L046ctr32_abort:
+.L048ctr32_abort:
popl %edi
popl %esi
popl %ebx
@@ -880,6 +899,7 @@ padlock_ctr32_encrypt:
.align 16
padlock_xstore:
.L_padlock_xstore_begin:
+.byte 243,15,30,251
pushl %edi
movl 8(%esp),%edi
movl 12(%esp),%edx
@@ -890,14 +910,15 @@ padlock_xstore:
.type _win32_segv_handler,@function
.align 16
_win32_segv_handler:
+.byte 243,15,30,251
movl $1,%eax
movl 4(%esp),%edx
movl 12(%esp),%ecx
cmpl $3221225477,(%edx)
- jne .L053ret
+ jne .L055ret
addl $4,184(%ecx)
movl $0,%eax
-.L053ret:
+.L055ret:
ret
.size _win32_segv_handler,.-_win32_segv_handler
.globl padlock_sha1_oneshot
@@ -905,6 +926,7 @@ _win32_segv_handler:
.align 16
padlock_sha1_oneshot:
.L_padlock_sha1_oneshot_begin:
+.byte 243,15,30,251
pushl %edi
pushl %esi
xorl %eax,%eax
@@ -936,6 +958,7 @@ padlock_sha1_oneshot:
.align 16
padlock_sha1_blocks:
.L_padlock_sha1_blocks_begin:
+.byte 243,15,30,251
pushl %edi
pushl %esi
movl 12(%esp),%edi
@@ -966,6 +989,7 @@ padlock_sha1_blocks:
.align 16
padlock_sha256_oneshot:
.L_padlock_sha256_oneshot_begin:
+.byte 243,15,30,251
pushl %edi
pushl %esi
xorl %eax,%eax
@@ -997,6 +1021,7 @@ padlock_sha256_oneshot:
.align 16
padlock_sha256_blocks:
.L_padlock_sha256_blocks_begin:
+.byte 243,15,30,251
pushl %edi
pushl %esi
movl 12(%esp),%edi
@@ -1027,6 +1052,7 @@ padlock_sha256_blocks:
.align 16
padlock_sha512_blocks:
.L_padlock_sha512_blocks_begin:
+.byte 243,15,30,251
pushl %edi
pushl %esi
movl 12(%esp),%edi
@@ -1069,7 +1095,21 @@ padlock_sha512_blocks:
.Lpadlock_saved_context:
.long 0
+ .section ".note.gnu.property", "a"
+ .p2align 2
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ .asciz "GNU"
+1:
+ .p2align 2
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 2
+4:
.section .note.GNU-stack,"",%progbits
-
-
diff --git a/lib/accelerated/x86/elf/e_padlock-x86_64.s b/lib/accelerated/x86/elf/e_padlock-x86_64.s
index c161f0a73..f92da756c 100644
--- a/lib/accelerated/x86/elf/e_padlock-x86_64.s
+++ b/lib/accelerated/x86/elf/e_padlock-x86_64.s
@@ -1,4 +1,4 @@
-# Copyright (c) 2011-2013, Andy Polyakov <appro@openssl.org>
+# Copyright (c) 2011-2016, Andy Polyakov <appro@openssl.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -42,36 +42,50 @@
.type padlock_capability,@function
.align 16
padlock_capability:
+.cfi_startproc
+.byte 243,15,30,250
movq %rbx,%r8
xorl %eax,%eax
cpuid
xorl %eax,%eax
- cmpl $1953391939,%ebx
+ cmpl $0x746e6543,%ebx
+ jne .Lzhaoxin
+ cmpl $0x48727561,%edx
jne .Lnoluck
- cmpl $1215460705,%edx
+ cmpl $0x736c7561,%ecx
jne .Lnoluck
- cmpl $1936487777,%ecx
+ jmp .LzhaoxinEnd
+.Lzhaoxin:
+ cmpl $0x68532020,%ebx
jne .Lnoluck
- movl $3221225472,%eax
+ cmpl $0x68676e61,%edx
+ jne .Lnoluck
+ cmpl $0x20206961,%ecx
+ jne .Lnoluck
+.LzhaoxinEnd:
+ movl $0xC0000000,%eax
cpuid
movl %eax,%edx
xorl %eax,%eax
- cmpl $3221225473,%edx
+ cmpl $0xC0000001,%edx
jb .Lnoluck
- movl $3221225473,%eax
+ movl $0xC0000001,%eax
cpuid
movl %edx,%eax
- andl $4294967279,%eax
- orl $16,%eax
+ andl $0xffffffef,%eax
+ orl $0x10,%eax
.Lnoluck:
movq %r8,%rbx
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_capability,.-padlock_capability
.globl padlock_key_bswap
.type padlock_key_bswap,@function
.align 16
padlock_key_bswap:
+.cfi_startproc
+.byte 243,15,30,250
movl 240(%rdi),%edx
.Lbswap_loop:
movl (%rdi),%eax
@@ -81,23 +95,29 @@ padlock_key_bswap:
subl $1,%edx
jnz .Lbswap_loop
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_key_bswap,.-padlock_key_bswap
.globl padlock_verify_context
.type padlock_verify_context,@function
.align 16
padlock_verify_context:
+.cfi_startproc
+.byte 243,15,30,250
movq %rdi,%rdx
pushf
leaq .Lpadlock_saved_context(%rip),%rax
call _padlock_verify_ctx
leaq 8(%rsp),%rsp
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_verify_context,.-padlock_verify_context
.type _padlock_verify_ctx,@function
.align 16
_padlock_verify_ctx:
+.cfi_startproc
+.byte 243,15,30,250
movq 8(%rsp),%r8
btq $30,%r8
jnc .Lverified
@@ -108,43 +128,55 @@ _padlock_verify_ctx:
.Lverified:
movq %rdx,(%rax)
.byte 0xf3,0xc3
+.cfi_endproc
.size _padlock_verify_ctx,.-_padlock_verify_ctx
.globl padlock_reload_key
.type padlock_reload_key,@function
.align 16
padlock_reload_key:
+.cfi_startproc
+.byte 243,15,30,250
pushf
popf
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_reload_key,.-padlock_reload_key
.globl padlock_aes_block
.type padlock_aes_block,@function
.align 16
padlock_aes_block:
+.cfi_startproc
+.byte 243,15,30,250
movq %rbx,%r8
movq $1,%rcx
leaq 32(%rdx),%rbx
leaq 16(%rdx),%rdx
-.byte 0xf3,0x0f,0xa7,0xc8
+.byte 0xf3,0x0f,0xa7,0xc8
movq %r8,%rbx
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_aes_block,.-padlock_aes_block
.globl padlock_xstore
.type padlock_xstore,@function
.align 16
padlock_xstore:
+.cfi_startproc
+.byte 243,15,30,250
movl %esi,%edx
-.byte 0x0f,0xa7,0xc0
+.byte 0x0f,0xa7,0xc0
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_xstore,.-padlock_xstore
.globl padlock_sha1_oneshot
.type padlock_sha1_oneshot,@function
.align 16
padlock_sha1_oneshot:
+.cfi_startproc
+.byte 243,15,30,250
movq %rdx,%rcx
movq %rdi,%rdx
movups (%rdi),%xmm0
@@ -154,19 +186,22 @@ padlock_sha1_oneshot:
movq %rsp,%rdi
movl %eax,16(%rsp)
xorq %rax,%rax
-.byte 0xf3,0x0f,0xa6,0xc8
+.byte 0xf3,0x0f,0xa6,0xc8
movaps (%rsp),%xmm0
movl 16(%rsp),%eax
addq $128+8,%rsp
movups %xmm0,(%rdx)
movl %eax,16(%rdx)
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_sha1_oneshot,.-padlock_sha1_oneshot
.globl padlock_sha1_blocks
.type padlock_sha1_blocks,@function
.align 16
padlock_sha1_blocks:
+.cfi_startproc
+.byte 243,15,30,250
movq %rdx,%rcx
movq %rdi,%rdx
movups (%rdi),%xmm0
@@ -176,19 +211,22 @@ padlock_sha1_blocks:
movq %rsp,%rdi
movl %eax,16(%rsp)
movq $-1,%rax
-.byte 0xf3,0x0f,0xa6,0xc8
+.byte 0xf3,0x0f,0xa6,0xc8
movaps (%rsp),%xmm0
movl 16(%rsp),%eax
addq $128+8,%rsp
movups %xmm0,(%rdx)
movl %eax,16(%rdx)
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_sha1_blocks,.-padlock_sha1_blocks
.globl padlock_sha256_oneshot
.type padlock_sha256_oneshot,@function
.align 16
padlock_sha256_oneshot:
+.cfi_startproc
+.byte 243,15,30,250
movq %rdx,%rcx
movq %rdi,%rdx
movups (%rdi),%xmm0
@@ -198,19 +236,22 @@ padlock_sha256_oneshot:
movq %rsp,%rdi
movaps %xmm1,16(%rsp)
xorq %rax,%rax
-.byte 0xf3,0x0f,0xa6,0xd0
+.byte 0xf3,0x0f,0xa6,0xd0
movaps (%rsp),%xmm0
movaps 16(%rsp),%xmm1
addq $128+8,%rsp
movups %xmm0,(%rdx)
movups %xmm1,16(%rdx)
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_sha256_oneshot,.-padlock_sha256_oneshot
.globl padlock_sha256_blocks
.type padlock_sha256_blocks,@function
.align 16
padlock_sha256_blocks:
+.cfi_startproc
+.byte 243,15,30,250
movq %rdx,%rcx
movq %rdi,%rdx
movups (%rdi),%xmm0
@@ -220,19 +261,22 @@ padlock_sha256_blocks:
movq %rsp,%rdi
movaps %xmm1,16(%rsp)
movq $-1,%rax
-.byte 0xf3,0x0f,0xa6,0xd0
+.byte 0xf3,0x0f,0xa6,0xd0
movaps (%rsp),%xmm0
movaps 16(%rsp),%xmm1
addq $128+8,%rsp
movups %xmm0,(%rdx)
movups %xmm1,16(%rdx)
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_sha256_blocks,.-padlock_sha256_blocks
.globl padlock_sha512_blocks
.type padlock_sha512_blocks,@function
.align 16
padlock_sha512_blocks:
+.cfi_startproc
+.byte 243,15,30,250
movq %rdx,%rcx
movq %rdi,%rdx
movups (%rdi),%xmm0
@@ -245,7 +289,7 @@ padlock_sha512_blocks:
movaps %xmm1,16(%rsp)
movaps %xmm2,32(%rsp)
movaps %xmm3,48(%rsp)
-.byte 0xf3,0x0f,0xa6,0xe0
+.byte 0xf3,0x0f,0xa6,0xe0
movaps (%rsp),%xmm0
movaps 16(%rsp),%xmm1
movaps 32(%rsp),%xmm2
@@ -256,11 +300,14 @@ padlock_sha512_blocks:
movups %xmm2,32(%rdx)
movups %xmm3,48(%rdx)
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_sha512_blocks,.-padlock_sha512_blocks
.globl padlock_ecb_encrypt
.type padlock_ecb_encrypt,@function
.align 16
padlock_ecb_encrypt:
+.cfi_startproc
+.byte 243,15,30,250
pushq %rbp
pushq %rbx
@@ -278,9 +325,9 @@ padlock_ecb_encrypt:
xorl %ebx,%ebx
testl $32,(%rdx)
jnz .Lecb_aligned
- testq $15,%rdi
+ testq $0x0f,%rdi
setz %al
- testq $15,%rsi
+ testq $0x0f,%rsi
setz %bl
testl %ebx,%eax
jnz .Lecb_aligned
@@ -304,7 +351,7 @@ padlock_ecb_encrypt:
cmoveq %rdi,%rax
addq %rcx,%rax
negq %rax
- andq $4095,%rax
+ andq $0xfff,%rax
cmpq $128,%rax
movq $-128,%rax
cmovaeq %rbx,%rax
@@ -320,12 +367,12 @@ padlock_ecb_encrypt:
movq %rcx,%r10
movq %rbx,%rcx
movq %rbx,%r11
- testq $15,%rdi
+ testq $0x0f,%rdi
cmovnzq %rsp,%rdi
- testq $15,%rsi
+ testq $0x0f,%rsi
jz .Lecb_inp_aligned
shrq $3,%rcx
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
subq %rbx,%rdi
movq %rbx,%rcx
movq %rdi,%rsi
@@ -333,15 +380,15 @@ padlock_ecb_encrypt:
leaq -16(%rdx),%rax
leaq 16(%rdx),%rbx
shrq $4,%rcx
-.byte 0xf3,0x0f,0xa7,200
+.byte 0xf3,0x0f,0xa7,200
movq %r8,%rdi
movq %r11,%rbx
- testq $15,%rdi
+ testq $0x0f,%rdi
jz .Lecb_out_aligned
movq %rbx,%rcx
leaq (%rsp),%rsi
shrq $3,%rcx
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
subq %rbx,%rdi
.Lecb_out_aligned:
movq %r9,%rsi
@@ -362,7 +409,7 @@ padlock_ecb_encrypt:
subq %rax,%rsp
shrq $3,%rcx
leaq (%rsp),%rdi
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
movq %rsp,%rsi
movq %r8,%rdi
movq %rbx,%rcx
@@ -388,7 +435,7 @@ padlock_ecb_encrypt:
.Lecb_aligned:
leaq (%rsi,%rcx,1),%rbp
negq %rbp
- andq $4095,%rbp
+ andq $0xfff,%rbp
xorl %eax,%eax
cmpq $128,%rbp
movq $128-1,%rbp
@@ -399,7 +446,7 @@ padlock_ecb_encrypt:
leaq -16(%rdx),%rax
leaq 16(%rdx),%rbx
shrq $4,%rcx
-.byte 0xf3,0x0f,0xa7,200
+.byte 0xf3,0x0f,0xa7,200
testq %rbp,%rbp
jz .Lecb_exit
@@ -411,7 +458,7 @@ padlock_ecb_encrypt:
subq %rcx,%rsp
shrq $3,%rcx
leaq (%rsp),%rdi
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
leaq (%r8),%rdi
leaq (%rsp),%rsi
movq %rbx,%rcx
@@ -423,11 +470,14 @@ padlock_ecb_encrypt:
popq %rbx
popq %rbp
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_ecb_encrypt,.-padlock_ecb_encrypt
.globl padlock_cbc_encrypt
.type padlock_cbc_encrypt,@function
.align 16
padlock_cbc_encrypt:
+.cfi_startproc
+.byte 243,15,30,250
pushq %rbp
pushq %rbx
@@ -445,9 +495,9 @@ padlock_cbc_encrypt:
xorl %ebx,%ebx
testl $32,(%rdx)
jnz .Lcbc_aligned
- testq $15,%rdi
+ testq $0x0f,%rdi
setz %al
- testq $15,%rsi
+ testq $0x0f,%rsi
setz %bl
testl %ebx,%eax
jnz .Lcbc_aligned
@@ -471,7 +521,7 @@ padlock_cbc_encrypt:
cmoveq %rdi,%rax
addq %rcx,%rax
negq %rax
- andq $4095,%rax
+ andq $0xfff,%rax
cmpq $64,%rax
movq $-64,%rax
cmovaeq %rbx,%rax
@@ -487,12 +537,12 @@ padlock_cbc_encrypt:
movq %rcx,%r10
movq %rbx,%rcx
movq %rbx,%r11
- testq $15,%rdi
+ testq $0x0f,%rdi
cmovnzq %rsp,%rdi
- testq $15,%rsi
+ testq $0x0f,%rsi
jz .Lcbc_inp_aligned
shrq $3,%rcx
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
subq %rbx,%rdi
movq %rbx,%rcx
movq %rdi,%rsi
@@ -500,17 +550,17 @@ padlock_cbc_encrypt:
leaq -16(%rdx),%rax
leaq 16(%rdx),%rbx
shrq $4,%rcx
-.byte 0xf3,0x0f,0xa7,208
+.byte 0xf3,0x0f,0xa7,208
movdqa (%rax),%xmm0
movdqa %xmm0,-16(%rdx)
movq %r8,%rdi
movq %r11,%rbx
- testq $15,%rdi
+ testq $0x0f,%rdi
jz .Lcbc_out_aligned
movq %rbx,%rcx
leaq (%rsp),%rsi
shrq $3,%rcx
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
subq %rbx,%rdi
.Lcbc_out_aligned:
movq %r9,%rsi
@@ -531,7 +581,7 @@ padlock_cbc_encrypt:
subq %rax,%rsp
shrq $3,%rcx
leaq (%rsp),%rdi
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
movq %rsp,%rsi
movq %r8,%rdi
movq %rbx,%rcx
@@ -557,7 +607,7 @@ padlock_cbc_encrypt:
.Lcbc_aligned:
leaq (%rsi,%rcx,1),%rbp
negq %rbp
- andq $4095,%rbp
+ andq $0xfff,%rbp
xorl %eax,%eax
cmpq $64,%rbp
movq $64-1,%rbp
@@ -568,7 +618,7 @@ padlock_cbc_encrypt:
leaq -16(%rdx),%rax
leaq 16(%rdx),%rbx
shrq $4,%rcx
-.byte 0xf3,0x0f,0xa7,208
+.byte 0xf3,0x0f,0xa7,208
movdqa (%rax),%xmm0
movdqa %xmm0,-16(%rdx)
testq %rbp,%rbp
@@ -582,7 +632,7 @@ padlock_cbc_encrypt:
subq %rcx,%rsp
shrq $3,%rcx
leaq (%rsp),%rdi
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
leaq (%r8),%rdi
leaq (%rsp),%rsi
movq %rbx,%rcx
@@ -594,11 +644,14 @@ padlock_cbc_encrypt:
popq %rbx
popq %rbp
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_cbc_encrypt,.-padlock_cbc_encrypt
.globl padlock_cfb_encrypt
.type padlock_cfb_encrypt,@function
.align 16
padlock_cfb_encrypt:
+.cfi_startproc
+.byte 243,15,30,250
pushq %rbp
pushq %rbx
@@ -616,9 +669,9 @@ padlock_cfb_encrypt:
xorl %ebx,%ebx
testl $32,(%rdx)
jnz .Lcfb_aligned
- testq $15,%rdi
+ testq $0x0f,%rdi
setz %al
- testq $15,%rsi
+ testq $0x0f,%rsi
setz %bl
testl %ebx,%eax
jnz .Lcfb_aligned
@@ -645,12 +698,12 @@ padlock_cfb_encrypt:
movq %rcx,%r10
movq %rbx,%rcx
movq %rbx,%r11
- testq $15,%rdi
+ testq $0x0f,%rdi
cmovnzq %rsp,%rdi
- testq $15,%rsi
+ testq $0x0f,%rsi
jz .Lcfb_inp_aligned
shrq $3,%rcx
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
subq %rbx,%rdi
movq %rbx,%rcx
movq %rdi,%rsi
@@ -658,17 +711,17 @@ padlock_cfb_encrypt:
leaq -16(%rdx),%rax
leaq 16(%rdx),%rbx
shrq $4,%rcx
-.byte 0xf3,0x0f,0xa7,224
+.byte 0xf3,0x0f,0xa7,224
movdqa (%rax),%xmm0
movdqa %xmm0,-16(%rdx)
movq %r8,%rdi
movq %r11,%rbx
- testq $15,%rdi
+ testq $0x0f,%rdi
jz .Lcfb_out_aligned
movq %rbx,%rcx
leaq (%rsp),%rsi
shrq $3,%rcx
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
subq %rbx,%rdi
.Lcfb_out_aligned:
movq %r9,%rsi
@@ -698,7 +751,7 @@ padlock_cfb_encrypt:
leaq -16(%rdx),%rax
leaq 16(%rdx),%rbx
shrq $4,%rcx
-.byte 0xf3,0x0f,0xa7,224
+.byte 0xf3,0x0f,0xa7,224
movdqa (%rax),%xmm0
movdqa %xmm0,-16(%rdx)
.Lcfb_exit:
@@ -708,11 +761,14 @@ padlock_cfb_encrypt:
popq %rbx
popq %rbp
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_cfb_encrypt,.-padlock_cfb_encrypt
.globl padlock_ofb_encrypt
.type padlock_ofb_encrypt,@function
.align 16
padlock_ofb_encrypt:
+.cfi_startproc
+.byte 243,15,30,250
pushq %rbp
pushq %rbx
@@ -730,9 +786,9 @@ padlock_ofb_encrypt:
xorl %ebx,%ebx
testl $32,(%rdx)
jnz .Lofb_aligned
- testq $15,%rdi
+ testq $0x0f,%rdi
setz %al
- testq $15,%rsi
+ testq $0x0f,%rsi
setz %bl
testl %ebx,%eax
jnz .Lofb_aligned
@@ -759,12 +815,12 @@ padlock_ofb_encrypt:
movq %rcx,%r10
movq %rbx,%rcx
movq %rbx,%r11
- testq $15,%rdi
+ testq $0x0f,%rdi
cmovnzq %rsp,%rdi
- testq $15,%rsi
+ testq $0x0f,%rsi
jz .Lofb_inp_aligned
shrq $3,%rcx
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
subq %rbx,%rdi
movq %rbx,%rcx
movq %rdi,%rsi
@@ -772,17 +828,17 @@ padlock_ofb_encrypt:
leaq -16(%rdx),%rax
leaq 16(%rdx),%rbx
shrq $4,%rcx
-.byte 0xf3,0x0f,0xa7,232
+.byte 0xf3,0x0f,0xa7,232
movdqa (%rax),%xmm0
movdqa %xmm0,-16(%rdx)
movq %r8,%rdi
movq %r11,%rbx
- testq $15,%rdi
+ testq $0x0f,%rdi
jz .Lofb_out_aligned
movq %rbx,%rcx
leaq (%rsp),%rsi
shrq $3,%rcx
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
subq %rbx,%rdi
.Lofb_out_aligned:
movq %r9,%rsi
@@ -812,7 +868,7 @@ padlock_ofb_encrypt:
leaq -16(%rdx),%rax
leaq 16(%rdx),%rbx
shrq $4,%rcx
-.byte 0xf3,0x0f,0xa7,232
+.byte 0xf3,0x0f,0xa7,232
movdqa (%rax),%xmm0
movdqa %xmm0,-16(%rdx)
.Lofb_exit:
@@ -822,11 +878,14 @@ padlock_ofb_encrypt:
popq %rbx
popq %rbp
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_ofb_encrypt,.-padlock_ofb_encrypt
.globl padlock_ctr32_encrypt
.type padlock_ctr32_encrypt,@function
.align 16
padlock_ctr32_encrypt:
+.cfi_startproc
+.byte 243,15,30,250
pushq %rbp
pushq %rbx
@@ -844,9 +903,9 @@ padlock_ctr32_encrypt:
xorl %ebx,%ebx
testl $32,(%rdx)
jnz .Lctr32_aligned
- testq $15,%rdi
+ testq $0x0f,%rdi
setz %al
- testq $15,%rsi
+ testq $0x0f,%rsi
setz %bl
testl %ebx,%eax
jnz .Lctr32_aligned
@@ -881,7 +940,7 @@ padlock_ctr32_encrypt:
cmoveq %rdi,%rax
addq %rcx,%rax
negq %rax
- andq $4095,%rax
+ andq $0xfff,%rax
cmpq $32,%rax
movq $-32,%rax
cmovaeq %rbx,%rax
@@ -897,12 +956,12 @@ padlock_ctr32_encrypt:
movq %rcx,%r10
movq %rbx,%rcx
movq %rbx,%r11
- testq $15,%rdi
+ testq $0x0f,%rdi
cmovnzq %rsp,%rdi
- testq $15,%rsi
+ testq $0x0f,%rsi
jz .Lctr32_inp_aligned
shrq $3,%rcx
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
subq %rbx,%rdi
movq %rbx,%rcx
movq %rdi,%rsi
@@ -910,23 +969,23 @@ padlock_ctr32_encrypt:
leaq -16(%rdx),%rax
leaq 16(%rdx),%rbx
shrq $4,%rcx
-.byte 0xf3,0x0f,0xa7,216
+.byte 0xf3,0x0f,0xa7,216
movl -4(%rdx),%eax
- testl $4294901760,%eax
+ testl $0xffff0000,%eax
jnz .Lctr32_no_carry
bswapl %eax
- addl $65536,%eax
+ addl $0x10000,%eax
bswapl %eax
movl %eax,-4(%rdx)
.Lctr32_no_carry:
movq %r8,%rdi
movq %r11,%rbx
- testq $15,%rdi
+ testq $0x0f,%rdi
jz .Lctr32_out_aligned
movq %rbx,%rcx
leaq (%rsp),%rsi
shrq $3,%rcx
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
subq %rbx,%rdi
.Lctr32_out_aligned:
movq %r9,%rsi
@@ -944,7 +1003,7 @@ padlock_ctr32_encrypt:
cmoveq %rdi,%rax
addq %rcx,%rax
negq %rax
- andq $4095,%rax
+ andq $0xfff,%rax
cmpq $32,%rax
movq $-32,%rax
cmovaeq %rbx,%rax
@@ -959,7 +1018,7 @@ padlock_ctr32_encrypt:
subq %rax,%rsp
shrq $3,%rcx
leaq (%rsp),%rdi
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
movq %rsp,%rsi
movq %r8,%rdi
movq %rbx,%rcx
@@ -986,7 +1045,7 @@ padlock_ctr32_encrypt:
movl -4(%rdx),%eax
bswapl %eax
negl %eax
- andl $65535,%eax
+ andl $0xffff,%eax
movq $1048576,%rbx
shll $4,%eax
cmovzq %rbx,%rax
@@ -1003,11 +1062,11 @@ padlock_ctr32_encrypt:
leaq -16(%rdx),%rax
leaq 16(%rdx),%rbx
shrq $4,%rcx
-.byte 0xf3,0x0f,0xa7,216
+.byte 0xf3,0x0f,0xa7,216
movl -4(%rdx),%eax
bswapl %eax
- addl $65536,%eax
+ addl $0x10000,%eax
bswapl %eax
movl %eax,-4(%rdx)
@@ -1021,7 +1080,7 @@ padlock_ctr32_encrypt:
.Lctr32_aligned_skip:
leaq (%rsi,%rcx,1),%rbp
negq %rbp
- andq $4095,%rbp
+ andq $0xfff,%rbp
xorl %eax,%eax
cmpq $32,%rbp
movq $32-1,%rbp
@@ -1032,7 +1091,7 @@ padlock_ctr32_encrypt:
leaq -16(%rdx),%rax
leaq 16(%rdx),%rbx
shrq $4,%rcx
-.byte 0xf3,0x0f,0xa7,216
+.byte 0xf3,0x0f,0xa7,216
testq %rbp,%rbp
jz .Lctr32_exit
@@ -1044,7 +1103,7 @@ padlock_ctr32_encrypt:
subq %rcx,%rsp
shrq $3,%rcx
leaq (%rsp),%rdi
-.byte 0xf3,0x48,0xa5
+.byte 0xf3,0x48,0xa5
leaq (%r8),%rdi
leaq (%rsp),%rsi
movq %rbx,%rcx
@@ -1056,6 +1115,7 @@ padlock_ctr32_encrypt:
popq %rbx
popq %rbp
.byte 0xf3,0xc3
+.cfi_endproc
.size padlock_ctr32_encrypt,.-padlock_ctr32_encrypt
.byte 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,95,54,52,32,109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
.align 16
@@ -1063,8 +1123,26 @@ padlock_ctr32_encrypt:
.align 8
.Lpadlock_saved_context:
.quad 0
-
+ .section ".note.gnu.property", "a"
+ .p2align 3
+ .long 1f - 0f
+ .long 4f - 1f
+ .long 5
+0:
+ # "GNU" encoded with .byte, since .asciz isn't supported
+ # on Solaris.
+ .byte 0x47
+ .byte 0x4e
+ .byte 0x55
+ .byte 0
+1:
+ .p2align 3
+ .long 0xc0000002
+ .long 3f - 2f
+2:
+ .long 3
+3:
+ .p2align 3
+4:
.section .note.GNU-stack,"",%progbits
-
-