Merge pull request #6136 from SparkiDev/armv7_aes_no_reloc_text

ARMv7a AES asm: don't have relocatable text
This commit is contained in:
David Garske
2023-03-01 14:36:41 -08:00
committed by GitHub

View File

@@ -553,274 +553,7 @@ L_AES_ARM32_td:
.word 0x70d532b6
.word 0x74486c5c
.word 0x42d0b857
.text
.type L_AES_ARM32_td4, %object
.size L_AES_ARM32_td4, 256
.align 4
L_AES_ARM32_td4:
.byte 0x52
.byte 0x9
.byte 0x6a
.byte 0xd5
.byte 0x30
.byte 0x36
.byte 0xa5
.byte 0x38
.byte 0xbf
.byte 0x40
.byte 0xa3
.byte 0x9e
.byte 0x81
.byte 0xf3
.byte 0xd7
.byte 0xfb
.byte 0x7c
.byte 0xe3
.byte 0x39
.byte 0x82
.byte 0x9b
.byte 0x2f
.byte 0xff
.byte 0x87
.byte 0x34
.byte 0x8e
.byte 0x43
.byte 0x44
.byte 0xc4
.byte 0xde
.byte 0xe9
.byte 0xcb
.byte 0x54
.byte 0x7b
.byte 0x94
.byte 0x32
.byte 0xa6
.byte 0xc2
.byte 0x23
.byte 0x3d
.byte 0xee
.byte 0x4c
.byte 0x95
.byte 0xb
.byte 0x42
.byte 0xfa
.byte 0xc3
.byte 0x4e
.byte 0x8
.byte 0x2e
.byte 0xa1
.byte 0x66
.byte 0x28
.byte 0xd9
.byte 0x24
.byte 0xb2
.byte 0x76
.byte 0x5b
.byte 0xa2
.byte 0x49
.byte 0x6d
.byte 0x8b
.byte 0xd1
.byte 0x25
.byte 0x72
.byte 0xf8
.byte 0xf6
.byte 0x64
.byte 0x86
.byte 0x68
.byte 0x98
.byte 0x16
.byte 0xd4
.byte 0xa4
.byte 0x5c
.byte 0xcc
.byte 0x5d
.byte 0x65
.byte 0xb6
.byte 0x92
.byte 0x6c
.byte 0x70
.byte 0x48
.byte 0x50
.byte 0xfd
.byte 0xed
.byte 0xb9
.byte 0xda
.byte 0x5e
.byte 0x15
.byte 0x46
.byte 0x57
.byte 0xa7
.byte 0x8d
.byte 0x9d
.byte 0x84
.byte 0x90
.byte 0xd8
.byte 0xab
.byte 0x0
.byte 0x8c
.byte 0xbc
.byte 0xd3
.byte 0xa
.byte 0xf7
.byte 0xe4
.byte 0x58
.byte 0x5
.byte 0xb8
.byte 0xb3
.byte 0x45
.byte 0x6
.byte 0xd0
.byte 0x2c
.byte 0x1e
.byte 0x8f
.byte 0xca
.byte 0x3f
.byte 0xf
.byte 0x2
.byte 0xc1
.byte 0xaf
.byte 0xbd
.byte 0x3
.byte 0x1
.byte 0x13
.byte 0x8a
.byte 0x6b
.byte 0x3a
.byte 0x91
.byte 0x11
.byte 0x41
.byte 0x4f
.byte 0x67
.byte 0xdc
.byte 0xea
.byte 0x97
.byte 0xf2
.byte 0xcf
.byte 0xce
.byte 0xf0
.byte 0xb4
.byte 0xe6
.byte 0x73
.byte 0x96
.byte 0xac
.byte 0x74
.byte 0x22
.byte 0xe7
.byte 0xad
.byte 0x35
.byte 0x85
.byte 0xe2
.byte 0xf9
.byte 0x37
.byte 0xe8
.byte 0x1c
.byte 0x75
.byte 0xdf
.byte 0x6e
.byte 0x47
.byte 0xf1
.byte 0x1a
.byte 0x71
.byte 0x1d
.byte 0x29
.byte 0xc5
.byte 0x89
.byte 0x6f
.byte 0xb7
.byte 0x62
.byte 0xe
.byte 0xaa
.byte 0x18
.byte 0xbe
.byte 0x1b
.byte 0xfc
.byte 0x56
.byte 0x3e
.byte 0x4b
.byte 0xc6
.byte 0xd2
.byte 0x79
.byte 0x20
.byte 0x9a
.byte 0xdb
.byte 0xc0
.byte 0xfe
.byte 0x78
.byte 0xcd
.byte 0x5a
.byte 0xf4
.byte 0x1f
.byte 0xdd
.byte 0xa8
.byte 0x33
.byte 0x88
.byte 0x7
.byte 0xc7
.byte 0x31
.byte 0xb1
.byte 0x12
.byte 0x10
.byte 0x59
.byte 0x27
.byte 0x80
.byte 0xec
.byte 0x5f
.byte 0x60
.byte 0x51
.byte 0x7f
.byte 0xa9
.byte 0x19
.byte 0xb5
.byte 0x4a
.byte 0xd
.byte 0x2d
.byte 0xe5
.byte 0x7a
.byte 0x9f
.byte 0x93
.byte 0xc9
.byte 0x9c
.byte 0xef
.byte 0xa0
.byte 0xe0
.byte 0x3b
.byte 0x4d
.byte 0xae
.byte 0x2a
.byte 0xf5
.byte 0xb0
.byte 0xc8
.byte 0xeb
.byte 0xbb
.byte 0x3c
.byte 0x83
.byte 0x53
.byte 0x99
.byte 0x61
.byte 0x17
.byte 0x2b
.byte 0x4
.byte 0x7e
.byte 0xba
.byte 0x77
.byte 0xd6
.byte 0x26
.byte 0xe1
.byte 0x69
.byte 0x14
.byte 0x63
.byte 0x55
.byte 0x21
.byte 0xc
.byte 0x7d
#ifndef NO_AES
.text
.type L_AES_SEK_ARM32_tep, %object
.size L_AES_SEK_ARM32_tep, 4
.align 4
L_AES_SEK_ARM32_tep:
.word L_AES_ARM32_te
.text
.type L_AES_SEK_ARM32_rcon, %object
.size L_AES_SEK_ARM32_rcon, 40
@@ -842,8 +575,10 @@ L_AES_SEK_ARM32_rcon:
.type AES_set_encrypt_key, %function
AES_set_encrypt_key:
push {r4, r5, r6, r7, r8, lr}
adr r4, AES_set_encrypt_key
mov r8, #AES_set_encrypt_key-L_AES_ARM32_te
sub r8, r4, r8
adr lr, L_AES_SEK_ARM32_rcon
ldr r8, L_AES_SEK_ARM32_tep
cmp r1, #0x80
beq L_AES_set_encrypt_key_start_128
cmp r1, #0xc0
@@ -1084,26 +819,17 @@ L_AES_set_encrypt_key_end:
pop {r4, r5, r6, r7, r8, pc}
.size AES_set_encrypt_key,.-AES_set_encrypt_key
#ifdef HAVE_AES_DECRYPT
.text
.type L_AES_IK_ARM32_tep, %object
.size L_AES_IK_ARM32_tep, 4
.align 4
L_AES_IK_ARM32_tep:
.word L_AES_ARM32_te
.text
.type L_AES_IK_ARM32_rcon, %object
.size L_AES_IK_ARM32_rcon, 4
.align 4
L_AES_IK_ARM32_rcon:
.word L_AES_ARM32_td
.text
.align 4
.globl AES_invert_key
.type AES_invert_key, %function
AES_invert_key:
push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
ldr r9, L_AES_IK_ARM32_tep
ldr r10, L_AES_IK_ARM32_rcon
adr r4, AES_invert_key
mov r9, #AES_invert_key-L_AES_ARM32_te
mov r10, #AES_invert_key-L_AES_ARM32_td
sub r9, r4, r9
sub r10, r4, r10
add r8, r0, r1, lsl #4
mov r11, r1
L_AES_invert_key_loop:
@@ -1418,20 +1144,16 @@ L_AES_encrypt_block_nr:
bx lr
.size AES_encrypt_block,.-AES_encrypt_block
#if defined(HAVE_AESCCM) || defined(HAVE_AESGCM) || defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER)
.text
.type L_AES_ARM32_tep, %object
.size L_AES_ARM32_tep, 4
.align 4
L_AES_ARM32_tep:
.word L_AES_ARM32_te
.text
.align 4
.globl AES_ECB_encrypt
.type AES_ECB_encrypt, %function
AES_ECB_encrypt:
push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
adr r4, AES_ECB_encrypt
mov lr, #AES_ECB_encrypt-L_AES_ARM32_te
sub lr, r4, lr
ldr r12, [sp, #36]
ldr lr, L_AES_ARM32_tep
cmp r12, #10
beq L_AES_ECB_encrypt_start_block_128
cmp r12, #12
@@ -1544,12 +1266,6 @@ L_AES_ECB_encrypt_end:
.size AES_ECB_encrypt,.-AES_ECB_encrypt
#endif /* HAVE_AESCCM || HAVE_AESGCM || WOLFSSL_AES_DIRECT || WOLFSSL_AES_COUNTER */
#ifdef HAVE_AES_CBC
.text
.type L_AES_CBC_ARM32_tep, %object
.size L_AES_CBC_ARM32_tep, 4
.align 4
L_AES_CBC_ARM32_tep:
.word L_AES_ARM32_te
.text
.align 4
.globl AES_CBC_encrypt
@@ -1560,7 +1276,9 @@ AES_CBC_encrypt:
ldr lr, [sp, #40]
ldm lr, {r4, r5, r6, r7}
push {lr}
ldr lr, L_AES_CBC_ARM32_tep
adr r8, AES_CBC_encrypt
mov lr, #AES_CBC_encrypt-L_AES_ARM32_te
sub lr, r8, lr
cmp r12, #10
beq L_AES_CBC_encrypt_start_block_128
cmp r12, #12
@@ -1687,12 +1405,6 @@ L_AES_CBC_encrypt_end:
.size AES_CBC_encrypt,.-AES_CBC_encrypt
#endif /* HAVE_AES_CBC */
#ifdef WOLFSSL_AES_COUNTER
.text
.type L_AES_CTR_ARM32_tep, %object
.size L_AES_CTR_ARM32_tep, 4
.align 4
L_AES_CTR_ARM32_tep:
.word L_AES_ARM32_te
.text
.align 4
.globl AES_CTR_encrypt
@@ -1708,7 +1420,9 @@ AES_CTR_encrypt:
rev r7, r7
stm lr, {r4, r5, r6, r7}
push {lr}
ldr lr, L_AES_CTR_ARM32_tep
adr r8, AES_CTR_encrypt
mov lr, #AES_CTR_encrypt-L_AES_ARM32_te
sub lr, r8, lr
cmp r12, #10
beq L_AES_CTR_encrypt_start_block_128
cmp r12, #12
@@ -1854,11 +1568,266 @@ L_AES_CTR_encrypt_end:
#ifdef HAVE_AES_DECRYPT
#if defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER) || defined(HAVE_AES_CBC)
.text
.type L_AES_ARM32_td4p, %object
.size L_AES_ARM32_td4p, 4
.type L_AES_ARM32_td4, %object
.size L_AES_ARM32_td4, 256
.align 4
L_AES_ARM32_td4p:
.word L_AES_ARM32_td4
L_AES_ARM32_td4:
.byte 0x52
.byte 0x9
.byte 0x6a
.byte 0xd5
.byte 0x30
.byte 0x36
.byte 0xa5
.byte 0x38
.byte 0xbf
.byte 0x40
.byte 0xa3
.byte 0x9e
.byte 0x81
.byte 0xf3
.byte 0xd7
.byte 0xfb
.byte 0x7c
.byte 0xe3
.byte 0x39
.byte 0x82
.byte 0x9b
.byte 0x2f
.byte 0xff
.byte 0x87
.byte 0x34
.byte 0x8e
.byte 0x43
.byte 0x44
.byte 0xc4
.byte 0xde
.byte 0xe9
.byte 0xcb
.byte 0x54
.byte 0x7b
.byte 0x94
.byte 0x32
.byte 0xa6
.byte 0xc2
.byte 0x23
.byte 0x3d
.byte 0xee
.byte 0x4c
.byte 0x95
.byte 0xb
.byte 0x42
.byte 0xfa
.byte 0xc3
.byte 0x4e
.byte 0x8
.byte 0x2e
.byte 0xa1
.byte 0x66
.byte 0x28
.byte 0xd9
.byte 0x24
.byte 0xb2
.byte 0x76
.byte 0x5b
.byte 0xa2
.byte 0x49
.byte 0x6d
.byte 0x8b
.byte 0xd1
.byte 0x25
.byte 0x72
.byte 0xf8
.byte 0xf6
.byte 0x64
.byte 0x86
.byte 0x68
.byte 0x98
.byte 0x16
.byte 0xd4
.byte 0xa4
.byte 0x5c
.byte 0xcc
.byte 0x5d
.byte 0x65
.byte 0xb6
.byte 0x92
.byte 0x6c
.byte 0x70
.byte 0x48
.byte 0x50
.byte 0xfd
.byte 0xed
.byte 0xb9
.byte 0xda
.byte 0x5e
.byte 0x15
.byte 0x46
.byte 0x57
.byte 0xa7
.byte 0x8d
.byte 0x9d
.byte 0x84
.byte 0x90
.byte 0xd8
.byte 0xab
.byte 0x0
.byte 0x8c
.byte 0xbc
.byte 0xd3
.byte 0xa
.byte 0xf7
.byte 0xe4
.byte 0x58
.byte 0x5
.byte 0xb8
.byte 0xb3
.byte 0x45
.byte 0x6
.byte 0xd0
.byte 0x2c
.byte 0x1e
.byte 0x8f
.byte 0xca
.byte 0x3f
.byte 0xf
.byte 0x2
.byte 0xc1
.byte 0xaf
.byte 0xbd
.byte 0x3
.byte 0x1
.byte 0x13
.byte 0x8a
.byte 0x6b
.byte 0x3a
.byte 0x91
.byte 0x11
.byte 0x41
.byte 0x4f
.byte 0x67
.byte 0xdc
.byte 0xea
.byte 0x97
.byte 0xf2
.byte 0xcf
.byte 0xce
.byte 0xf0
.byte 0xb4
.byte 0xe6
.byte 0x73
.byte 0x96
.byte 0xac
.byte 0x74
.byte 0x22
.byte 0xe7
.byte 0xad
.byte 0x35
.byte 0x85
.byte 0xe2
.byte 0xf9
.byte 0x37
.byte 0xe8
.byte 0x1c
.byte 0x75
.byte 0xdf
.byte 0x6e
.byte 0x47
.byte 0xf1
.byte 0x1a
.byte 0x71
.byte 0x1d
.byte 0x29
.byte 0xc5
.byte 0x89
.byte 0x6f
.byte 0xb7
.byte 0x62
.byte 0xe
.byte 0xaa
.byte 0x18
.byte 0xbe
.byte 0x1b
.byte 0xfc
.byte 0x56
.byte 0x3e
.byte 0x4b
.byte 0xc6
.byte 0xd2
.byte 0x79
.byte 0x20
.byte 0x9a
.byte 0xdb
.byte 0xc0
.byte 0xfe
.byte 0x78
.byte 0xcd
.byte 0x5a
.byte 0xf4
.byte 0x1f
.byte 0xdd
.byte 0xa8
.byte 0x33
.byte 0x88
.byte 0x7
.byte 0xc7
.byte 0x31
.byte 0xb1
.byte 0x12
.byte 0x10
.byte 0x59
.byte 0x27
.byte 0x80
.byte 0xec
.byte 0x5f
.byte 0x60
.byte 0x51
.byte 0x7f
.byte 0xa9
.byte 0x19
.byte 0xb5
.byte 0x4a
.byte 0xd
.byte 0x2d
.byte 0xe5
.byte 0x7a
.byte 0x9f
.byte 0x93
.byte 0xc9
.byte 0x9c
.byte 0xef
.byte 0xa0
.byte 0xe0
.byte 0x3b
.byte 0x4d
.byte 0xae
.byte 0x2a
.byte 0xf5
.byte 0xb0
.byte 0xc8
.byte 0xeb
.byte 0xbb
.byte 0x3c
.byte 0x83
.byte 0x53
.byte 0x99
.byte 0x61
.byte 0x17
.byte 0x2b
.byte 0x4
.byte 0x7e
.byte 0xba
.byte 0x77
.byte 0xd6
.byte 0x26
.byte 0xe1
.byte 0x69
.byte 0x14
.byte 0x63
.byte 0x55
.byte 0x21
.byte 0xc
.byte 0x7d
.text
.align 4
.globl AES_decrypt_block
@@ -2031,7 +2000,7 @@ L_AES_decrypt_block_nr:
eor r9, r9, r5
eor r10, r10, r6
eor r11, r11, r7
ldr r12, L_AES_ARM32_td4p
adr r12, L_AES_ARM32_td4
and r7, r2, r10, lsr #8
lsr r1, r8, #24
and r4, r2, r9
@@ -2088,12 +2057,6 @@ L_AES_decrypt_block_nr:
bx lr
.size AES_decrypt_block,.-AES_decrypt_block
#if defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER)
.text
.type L_AES_ARM32_tdp, %object
.size L_AES_ARM32_tdp, 4
.align 4
L_AES_ARM32_tdp:
.word L_AES_ARM32_td
.text
.align 4
.globl AES_ECB_decrypt
@@ -2102,7 +2065,9 @@ AES_ECB_decrypt:
push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
ldr r12, [sp, #36]
mov r8, r12
ldr lr, L_AES_ARM32_tdp
adr r4, AES_ECB_decrypt
mov lr, #AES_ECB_decrypt-L_AES_ARM32_td
sub lr, r4, lr
cmp r8, #10
beq L_AES_ECB_decrypt_start_block_128
cmp r8, #12
@@ -2215,12 +2180,6 @@ L_AES_ECB_decrypt_end:
.size AES_ECB_decrypt,.-AES_ECB_decrypt
#endif /* WOLFSSL_AES_DIRECT || WOLFSSL_AES_COUNTER */
#ifdef HAVE_AES_CBC
.text
.type L_AES_CBC_ARM32_tdp, %object
.size L_AES_CBC_ARM32_tdp, 4
.align 4
L_AES_CBC_ARM32_tdp:
.word L_AES_ARM32_td
.text
.align 4
.globl AES_CBC_decrypt
@@ -2232,8 +2191,10 @@ AES_CBC_decrypt:
ldr lr, [sp, #64]
str lr, [sp, #20]
str r3, [sp]
adr r8, AES_CBC_decrypt
mov lr, #AES_CBC_decrypt-L_AES_ARM32_td
sub lr, r8, lr
mov r8, r12
ldr lr, L_AES_CBC_ARM32_tdp
str lr, [sp, #4]
cmp r8, #10
beq L_AES_CBC_decrypt_loop_block_128
@@ -3262,12 +3223,6 @@ L_GCM_gmult_len_start_block:
pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
.size GCM_gmult_len,.-GCM_gmult_len
.text
.type L_AES_GCM_ARM32_tep, %object
.size L_AES_GCM_ARM32_tep, 4
.align 4
L_AES_GCM_ARM32_tep:
.word L_AES_ARM32_te
.text
.align 4
.globl AES_GCM_encrypt
.type AES_GCM_encrypt, %function
@@ -3282,7 +3237,9 @@ AES_GCM_encrypt:
rev r7, r7
stm lr, {r4, r5, r6, r7}
push {lr}
ldr lr, L_AES_GCM_ARM32_tep
adr r8, AES_GCM_encrypt
mov lr, #AES_GCM_encrypt-L_AES_ARM32_te
sub lr, r8, lr
cmp r12, #10
beq L_AES_GCM_encrypt_start_block_128
cmp r12, #12