diff options
author | Ron Yorston <rmy@pobox.com> | 2024-03-03 15:10:51 +0000 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2024-03-03 15:10:51 +0000 |
commit | 1273a1ddcab67c8ccca61c7c7c52c6049be4c336 (patch) | |
tree | c691e6a81625dee66b30e30eb7710e240ff58b8a | |
parent | ebe96eb8070d72c74a447ce06037e7b88ebdee40 (diff) | |
download | busybox-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.c | 2 |
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 |
426 | static void sp_256_sub_8_p256_mod(sp_digit* r) | 426 | static void sp_256_sub_8_p256_mod(sp_digit* r) |
427 | { | 427 | { |
428 | uint64_t reg; | 428 | uint64_t reg; |