]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Rename skein_block_asm.s to .S and assemble using Clang IAS
authoremaste <emaste@FreeBSD.org>
Sat, 6 Jun 2020 00:35:41 +0000 (00:35 +0000)
committeremaste <emaste@FreeBSD.org>
Sat, 6 Jun 2020 00:35:41 +0000 (00:35 +0000)
commit0b1e77734c7d7790126e360e535f6040658d82c7
tree6e60d73c80b6f11806e4c576c544855aed78c049
parent98a0e1a9cd3fa62acd970bcbf56e2d4ab93aadb0
Rename skein_block_asm.s to .S and assemble using Clang IAS

Comparing the object files produced by GNU as 2.17.50 and Clang IAS
shows many immaterial changes in strtab etc., and one material change
in .text:

   1bac:  4c 8b 4f 18             mov    0x18(%rdi),%r9
   1bb0:  eb 0e                   jmp    1bc0 <Skein1024_block_loop>
-  1bb2:  66 66 2e 0f 1f 84 00    data16 nopw %cs:0x0(%rax,%rax,1)
-  1bb9:  00 00 00 00
-  1bbd:  0f 1f 00                nopl   (%rax)
+  1bb2:  66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
+  1bb9:  00 00 00
+  1bbc:  0f 1f 40 00             nopl   0x0(%rax)

 0000000000001bc0 <Skein1024_block_loop>:
 Skein1024_block_loop():
   1bc0:  4c 8b 47 10             mov    0x10(%rdi),%r8
   1bc4:  4c 03 85 c0 00 00 00    add    0xc0(%rbp),%r8

That is, GNU as and Clang's integrated assembler use different multi-
byte NOPs for alignment (GNU as emits an 11 byte NOP + a 3 byte NOP,
while Clang IAS emits a 10 byte NOP + a 4 byte NOP).

Dependency cleanup hacks are not required, because we do not create
.depend files from GNU as.

Reviewed by: allanjude, arichardson, cem, tsoome
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D8434
lib/libmd/Makefile
sys/crypto/skein/amd64/skein_block_asm.S [moved from sys/crypto/skein/amd64/skein_block_asm.s with 100% similarity]
sys/modules/crypto/Makefile