summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/sha
diff options
context:
space:
mode:
authormiod <>2023-01-13 17:27:26 +0000
committermiod <>2023-01-13 17:27:26 +0000
commit8c3fb8abc1c51703bbfb514f4fd1ba9885108be3 (patch)
tree9aab92100156f42a43295dcb4074ba395f3a234d /src/lib/libcrypto/sha
parent364fc1ecd2d96b869246574350c6925835b991ab (diff)
downloadopenbsd-8c3fb8abc1c51703bbfb514f4fd1ba9885108be3.tar.gz
openbsd-8c3fb8abc1c51703bbfb514f4fd1ba9885108be3.tar.bz2
openbsd-8c3fb8abc1c51703bbfb514f4fd1ba9885108be3.zip
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@
Diffstat (limited to 'src/lib/libcrypto/sha')
-rw-r--r--src/lib/libcrypto/sha/asm/sha1-sparcv9.pl2
-rw-r--r--src/lib/libcrypto/sha/asm/sha1-sparcv9a.pl17
-rw-r--r--src/lib/libcrypto/sha/asm/sha512-sparcv9.pl20
3 files changed, 27 insertions, 12 deletions
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.=<<___;
275 restore 275 restore
276.type sha1_block_data_order,#function 276.type sha1_block_data_order,#function
277.size sha1_block_data_order,(.-sha1_block_data_order) 277.size sha1_block_data_order,(.-sha1_block_data_order)
278.asciz "SHA1 block transform for SPARCv9, CRYPTOGAMS by <appro\@openssl.org>"
279.align 4
280___ 278___
281 279
282$code =~ s/\`([^\`]*)\`/eval $1/gem; 280$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 @@ ___
396} 396}
397 397
398$code.=<<___; 398$code.=<<___;
399.section ".text",#alloc,#execinstr 399.section ".rodata",#alloc
400 400
401.align 64 401.align 64
402vis_const: 402vis_const:
@@ -409,13 +409,22 @@ vis_const:
409.type vis_const,#object 409.type vis_const,#object
410.size vis_const,(.-vis_const) 410.size vis_const,(.-vis_const)
411 411
412.section ".text",#alloc,#execinstr
412.globl sha1_block_data_order 413.globl sha1_block_data_order
413sha1_block_data_order: 414sha1_block_data_order:
414 save %sp,-$frame,%sp 415 save %sp,-$frame,%sp
415 add %fp,$bias-256,$base 416 add %fp,$bias-256,$base
416 417
4171: call .+8 418#ifdef __PIC__
418 add %o7,vis_const-1b,$tmp0 419 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5
420 rd %pc, %o4
421 or %o5, %lo(_GLOBAL_OFFSET_TABLE_+4), %o5
422 add %o5, %o4, %o5
423 set vis_const, %o4
424 ldx [%o4+%o5], %o4
425#else
426 set vis_const, %o4
427#endif
419 428
420 ldd [$tmp0+0],$VK_00_19 429 ldd [$tmp0+0],$VK_00_19
421 ldd [$tmp0+8],$VK_20_39 430 ldd [$tmp0+8],$VK_20_39
@@ -538,8 +547,6 @@ $code.=<<___;
538 restore 547 restore
539.type sha1_block_data_order,#function 548.type sha1_block_data_order,#function
540.size sha1_block_data_order,(.-sha1_block_data_order) 549.size sha1_block_data_order,(.-sha1_block_data_order)
541.asciz "SHA1 block transform for SPARCv9a, CRYPTOGAMS by <appro\@openssl.org>"
542.align 4
543___ 550___
544 551
545# Purpose of these subroutines is to explicitly encode VIS instructions, 552# 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);
386.register %g3,#scratch 386.register %g3,#scratch
387___ 387___
388$code.=<<___; 388$code.=<<___;
389.section ".text",#alloc,#execinstr 389.section ".rodata",#alloc
390 390
391.align 64 391.align 64
392K${label}: 392K${label}:
@@ -457,9 +457,17 @@ ___
457} 457}
458$code.=<<___; 458$code.=<<___;
459.size K${label},.-K${label} 459.size K${label},.-K${label}
460
461.section ".text",#alloc,#execinstr
460.globl sha${label}_block_data_order 462.globl sha${label}_block_data_order
461sha${label}_block_data_order: 463sha${label}_block_data_order:
462 save %sp,`-$frame-$locals`,%sp 464 save %sp,`-$frame-$locals`,%sp
465#ifdef __PIC__
466 sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %o5
467 rd %pc, %o4
468 or %o5, %lo(_GLOBAL_OFFSET_TABLE_+4), %o5
469 add %o5, %o4, %o5
470#endif
463 and $inp,`$align-1`,$tmp31 471 and $inp,`$align-1`,$tmp31
464 sllx $len,`log(16*$SZ)/log(2)`,$len 472 sllx $len,`log(16*$SZ)/log(2)`,$len
465 andn $inp,`$align-1`,$inp 473 andn $inp,`$align-1`,$inp
@@ -471,8 +479,12 @@ $code.=<<___ if ($SZ==8); # SHA512
471 sub $tmp32,$tmp31,$tmp32 479 sub $tmp32,$tmp31,$tmp32
472___ 480___
473$code.=<<___; 481$code.=<<___;
474.Lpic: call .+8 482#ifdef __PIC__
475 add %o7,K${label}-.Lpic,$Ktbl 483 set K${label}, $Ktbl
484 ldx [$Ktbl+%o5], $Ktbl
485#else
486 set K${label}, $Ktbl
487#endif
476 488
477 $LD [$ctx+`0*$SZ`],$A 489 $LD [$ctx+`0*$SZ`],$A
478 $LD [$ctx+`1*$SZ`],$B 490 $LD [$ctx+`1*$SZ`],$B
@@ -585,8 +597,6 @@ $code.=<<___;
585 restore 597 restore
586.type sha${label}_block_data_order,#function 598.type sha${label}_block_data_order,#function
587.size sha${label}_block_data_order,(.-sha${label}_block_data_order) 599.size sha${label}_block_data_order,(.-sha${label}_block_data_order)
588.asciz "SHA${label} block transform for SPARCv9, CRYPTOGAMS by <appro\@openssl.org>"
589.align 4
590___ 600___
591 601
592$code =~ s/\`([^\`]*)\`/eval $1/gem; 602$code =~ s/\`([^\`]*)\`/eval $1/gem;