aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2024-03-03 15:10:51 +0000
committerRon Yorston <rmy@pobox.com>2024-03-03 15:10:51 +0000
commit1273a1ddcab67c8ccca61c7c7c52c6049be4c336 (patch)
treec691e6a81625dee66b30e30eb7710e240ff58b8a
parentebe96eb8070d72c74a447ce06037e7b88ebdee40 (diff)
downloadbusybox-w32-1273a1ddcab67c8ccca61c7c7c52c6049be4c336.tar.gz
busybox-w32-1273a1ddcab67c8ccca61c7c7c52c6049be4c336.tar.bz2
busybox-w32-1273a1ddcab67c8ccca61c7c7c52c6049be4c336.zip
tls: use C code for x86_64 sp_256_sub_8_p256_mod()
There's an upstream bug report: https://bugs.busybox.net/show_bug.cgi?id=15679 that if BusyBox is built for x86_64 with gcc and the use of OpenSSL for wget is disabled, failures ensue. A similar issue also affects the busybox-w32 build with the comparable configuration. The problem appears to be in the assembly code for the function sp_256_sub_8_p256_mod(), as forcing the use of the provided C code seems to fix both upstream and busybox-w32. Since my knowledge of x64_64 assembler is non-existent, someone else will need to determine the actual issue. For the moment, just avoid the faulty code. Saves 32 bytes in the 64-bit build. (GitHub issue #263)
-rw-r--r--networking/tls_sp_c32.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/networking/tls_sp_c32.c b/networking/tls_sp_c32.c
index a593c5c40..999033034 100644
--- a/networking/tls_sp_c32.c
+++ b/networking/tls_sp_c32.c
@@ -422,7 +422,7 @@ static void sp_256_sub_8_p256_mod(sp_digit* r)
422 : "memory" 422 : "memory"
423 ); 423 );
424} 424}
425#elif ALLOW_ASM && defined(__GNUC__) && defined(__x86_64__) 425#elif ALLOW_ASM && defined(__GNUC__) && defined(__x86_64__) && ENABLE_PLATFORM_POSIX
426static void sp_256_sub_8_p256_mod(sp_digit* r) 426static void sp_256_sub_8_p256_mod(sp_digit* r)
427{ 427{
428 uint64_t reg; 428 uint64_t reg;