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/sha/asm/sha1-sparcv9.pl | 2 -- src/lib/libcrypto/sha/asm/sha1-sparcv9a.pl | 17 ++++++++++++----- src/lib/libcrypto/sha/asm/sha512-sparcv9.pl | 20 +++++++++++++++----- 3 files changed, 27 insertions(+), 12 deletions(-) (limited to 'src/lib/libcrypto/sha') diff --git a/src/lib/libcrypto/sha/asm/sha1-sparcv9.pl b/src/lib/libcrypto/sha/asm/sha1-sparcv9.pl index 5c161cecd6..5235c59e63 100644 --- a/src/lib/libcrypto/sha/asm/sha1-sparcv9.pl +++ b/src/lib/libcrypto/sha/asm/sha1-sparcv9.pl @@ -275,8 +275,6 @@ $code.=<<___; restore .type sha1_block_data_order,#function .size sha1_block_data_order,(.-sha1_block_data_order) -.asciz "SHA1 block transform for SPARCv9, CRYPTOGAMS by " -.align 4 ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; diff --git a/src/lib/libcrypto/sha/asm/sha1-sparcv9a.pl b/src/lib/libcrypto/sha/asm/sha1-sparcv9a.pl index e81a4dcb05..8e7674e9d2 100644 --- a/src/lib/libcrypto/sha/asm/sha1-sparcv9a.pl +++ b/src/lib/libcrypto/sha/asm/sha1-sparcv9a.pl @@ -396,7 +396,7 @@ ___ } $code.=<<___; -.section ".text",#alloc,#execinstr +.section ".rodata",#alloc .align 64 vis_const: @@ -409,13 +409,22 @@ vis_const: .type vis_const,#object .size vis_const,(.-vis_const) +.section ".text",#alloc,#execinstr .globl sha1_block_data_order sha1_block_data_order: save %sp,-$frame,%sp add %fp,$bias-256,$base -1: call .+8 - add %o7,vis_const-1b,$tmp0 +#ifdef __PIC__ + sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5 + rd %pc, %o4 + or %o5, %lo(_GLOBAL_OFFSET_TABLE_+4), %o5 + add %o5, %o4, %o5 + set vis_const, %o4 + ldx [%o4+%o5], %o4 +#else + set vis_const, %o4 +#endif ldd [$tmp0+0],$VK_00_19 ldd [$tmp0+8],$VK_20_39 @@ -538,8 +547,6 @@ $code.=<<___; restore .type sha1_block_data_order,#function .size sha1_block_data_order,(.-sha1_block_data_order) -.asciz "SHA1 block transform for SPARCv9a, CRYPTOGAMS by " -.align 4 ___ # Purpose of these subroutines is to explicitly encode VIS instructions, diff --git a/src/lib/libcrypto/sha/asm/sha512-sparcv9.pl b/src/lib/libcrypto/sha/asm/sha512-sparcv9.pl index 585740789e..3c93799446 100644 --- a/src/lib/libcrypto/sha/asm/sha512-sparcv9.pl +++ b/src/lib/libcrypto/sha/asm/sha512-sparcv9.pl @@ -386,7 +386,7 @@ $code.=<<___ if ($bits==64); .register %g3,#scratch ___ $code.=<<___; -.section ".text",#alloc,#execinstr +.section ".rodata",#alloc .align 64 K${label}: @@ -457,9 +457,17 @@ ___ } $code.=<<___; .size K${label},.-K${label} + +.section ".text",#alloc,#execinstr .globl sha${label}_block_data_order sha${label}_block_data_order: save %sp,`-$frame-$locals`,%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 and $inp,`$align-1`,$tmp31 sllx $len,`log(16*$SZ)/log(2)`,$len andn $inp,`$align-1`,$inp @@ -471,8 +479,12 @@ $code.=<<___ if ($SZ==8); # SHA512 sub $tmp32,$tmp31,$tmp32 ___ $code.=<<___; -.Lpic: call .+8 - add %o7,K${label}-.Lpic,$Ktbl +#ifdef __PIC__ + set K${label}, $Ktbl + ldx [$Ktbl+%o5], $Ktbl +#else + set K${label}, $Ktbl +#endif $LD [$ctx+`0*$SZ`],$A $LD [$ctx+`1*$SZ`],$B @@ -585,8 +597,6 @@ $code.=<<___; restore .type sha${label}_block_data_order,#function .size sha${label}_block_data_order,(.-sha${label}_block_data_order) -.asciz "SHA${label} block transform for SPARCv9, CRYPTOGAMS by " -.align 4 ___ $code =~ s/\`([^\`]*)\`/eval $1/gem; -- cgit v1.2.3-55-g6feb