From 25c59400a04e7301aaa6acb604b5ebef9d2f4cf1 Mon Sep 17 00:00:00 2001 From: miod <> Date: Fri, 13 Jan 2023 17:27:26 +0000 Subject: Move all data tables from .text section to .rodata, and update the code to fetch them correctly when building PIC. Also drop unused data, and remove --no-execute-only from linker flags. ok kettenis@ --- src/lib/libcrypto/aes/asm/aes-sparcv9.pl | 61 +++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 13 deletions(-) (limited to 'src/lib/libcrypto/aes/asm') diff --git a/src/lib/libcrypto/aes/asm/aes-sparcv9.pl b/src/lib/libcrypto/aes/asm/aes-sparcv9.pl index 403c4d1290..08ac9830f1 100755 --- a/src/lib/libcrypto/aes/asm/aes-sparcv9.pl +++ b/src/lib/libcrypto/aes/asm/aes-sparcv9.pl @@ -79,7 +79,7 @@ $code.=<<___ if ($bits==64); .register %g3,#scratch ___ $code.=<<___; -.section ".text",#alloc,#execinstr +.section ".rodata",#alloc .align 256 AES_Te: @@ -185,6 +185,7 @@ $code.=<<___; .type AES_Te,#object .size AES_Te,(.-AES_Te) +.section ".text",#alloc,#execinstr .align 64 .skip 16 _sparcv9_AES_encrypt: @@ -512,18 +513,30 @@ _sparcv9_AES_encrypt: .align 32 .globl AES_encrypt AES_encrypt: - or %o0,%o1,%g1 + save %sp,-$frame,%sp +#ifdef __PIC__ + sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5 + rd %pc, %o4 + or %o5, %lo(_GLOBAL_OFFSET_TABLE_+4), %o5 + add %o5, %o4, %o5 +#endif + + or %i0,%i1,%g1 andcc %g1,3,%g0 bnz,pn %xcc,.Lunaligned_enc - save %sp,-$frame,%sp + nop ld [%i0+0],%o0 ld [%i0+4],%o1 ld [%i0+8],%o2 ld [%i0+12],%o3 -1: call .+8 - add %o7,AES_Te-1b,%o4 +#ifdef __PIC__ + set AES_Te, %o4 + ldx [%o4+%o5], %o4 +#else + set AES_Te, %o4 +#endif call _sparcv9_AES_encrypt mov %i2,%o5 @@ -582,8 +595,12 @@ AES_encrypt: or %l7,%l6,%l6 or %l4,%l6,%o3 -1: call .+8 - add %o7,AES_Te-1b,%o4 +#ifdef __PIC__ + set AES_Te, %o4 + ldx [%o4+%o5], %o4 +#else + set AES_Te, %o4 +#endif call _sparcv9_AES_encrypt mov %i2,%o5 @@ -627,6 +644,7 @@ AES_encrypt: ___ $code.=<<___; +.section ".rodata",#alloc .align 256 AES_Td: ___ @@ -731,6 +749,7 @@ $code.=<<___; .type AES_Td,#object .size AES_Td,(.-AES_Td) +.section ".text",#alloc,#execinstr .align 64 .skip 16 _sparcv9_AES_decrypt: @@ -1058,18 +1077,30 @@ _sparcv9_AES_decrypt: .align 32 .globl AES_decrypt AES_decrypt: - or %o0,%o1,%g1 + save %sp,-$frame,%sp +#ifdef __PIC__ + sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5 + rd %pc, %o4 + or %o5, %lo(_GLOBAL_OFFSET_TABLE_+4), %o5 + add %o5, %o4, %o5 +#endif + + or %i0,%i1,%g1 andcc %g1,3,%g0 bnz,pn %xcc,.Lunaligned_dec - save %sp,-$frame,%sp + nop ld [%i0+0],%o0 ld [%i0+4],%o1 ld [%i0+8],%o2 ld [%i0+12],%o3 -1: call .+8 - add %o7,AES_Td-1b,%o4 +#ifdef __PIC__ + set AES_Td, %o4 + ldx [%o4+%o5], %o4 +#else + set AES_Td, %o4 +#endif call _sparcv9_AES_decrypt mov %i2,%o5 @@ -1128,8 +1159,12 @@ AES_decrypt: or %l7,%l6,%l6 or %l4,%l6,%o3 -1: call .+8 - add %o7,AES_Td-1b,%o4 +#ifdef __PIC__ + set AES_Td, %o4 + ldx [%o4+%o5], %o4 +#else + set AES_Td, %o4 +#endif call _sparcv9_AES_decrypt mov %i2,%o5 -- cgit v1.2.3-55-g6feb