diff --git a/net-im/libsignal-node/files/patch-boringssl-aarch64 b/net-im/libsignal-node/files/patch-boringssl-aarch64 index c28c2915bc0c..a579dbc1b433 100644 --- a/net-im/libsignal-node/files/patch-boringssl-aarch64 +++ b/net-im/libsignal-node/files/patch-boringssl-aarch64 @@ -1,75 +1,75 @@ ---- ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/src/crypto/CMakeLists.txt.orig 2022-08-16 17:41:13.291238000 +0200 -+++ ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/src/crypto/CMakeLists.txt 2022-08-16 17:41:48.826715000 +0200 +--- ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/src/crypto/CMakeLists.txt.orig 2022-08-16 17:41:13 UTC ++++ ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/src/crypto/CMakeLists.txt @@ -264,6 +264,7 @@ add_library( cipher_extra/tls_cbc.c cmac/cmac.c conf/conf.c + cpu-aarch64-freebsd.c cpu-aarch64-fuchsia.c cpu-aarch64-linux.c cpu-aarch64-win.c ---- ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/src/crypto/cpu-aarch64-freebsd.c.orig 2022-08-16 17:42:08.418245000 +0200 -+++ ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/src/crypto/cpu-aarch64-freebsd.c 2022-08-16 17:40:34.409448000 +0200 +--- ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/src/crypto/cpu-aarch64-freebsd.c.orig 2022-08-16 17:42:08 UTC ++++ ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/src/crypto/cpu-aarch64-freebsd.c @@ -0,0 +1,62 @@ +/* Copyright (c) 2016, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +#include "internal.h" + +#if defined(OPENSSL_AARCH64) + + +#include + + +extern uint32_t OPENSSL_armcap_P; + +#if defined(OPENSSL_FREEBSD) +#include +#include +#include +#endif + +#ifndef ID_AA64ISAR0_AES_VAL +#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES +#endif +#ifndef ID_AA64ISAR0_SHA1_VAL +#define ID_AA64ISAR0_SHA1_VAL ID_AA64ISAR0_SHA1 +#endif +#ifndef ID_AA64ISAR0_SHA2_VAL +#define ID_AA64ISAR0_SHA2_VAL ID_AA64ISAR0_SHA2 +#endif + +void OPENSSL_cpuid_setup(void) { + uint64_t id_aa64isar0; + + id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1); + + OPENSSL_armcap_P |= ARMV7_NEON; + + if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE) { + OPENSSL_armcap_P |= ARMV8_AES; + } + if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) { + OPENSSL_armcap_P |= ARMV8_PMULL; + } + if (ID_AA64ISAR0_SHA1_VAL(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) { + OPENSSL_armcap_P |= ARMV8_SHA1; + } + if (ID_AA64ISAR0_SHA2_VAL(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE) { + OPENSSL_armcap_P |= ARMV8_SHA256; + } +} + +#endif // OPENSSL_AARCH64 diff --git a/net-im/libsignal-node/files/patch-limit_XOPEN_SOURCE_to_Linux b/net-im/libsignal-node/files/patch-limit_XOPEN_SOURCE_to_Linux index 284b8304ffcd..4847aa3bfcaf 100644 --- a/net-im/libsignal-node/files/patch-limit_XOPEN_SOURCE_to_Linux +++ b/net-im/libsignal-node/files/patch-limit_XOPEN_SOURCE_to_Linux @@ -1,31 +1,31 @@ https://github.com/google/boringssl/commit/387f82054c8ffa7d2b9e31d908586fbd47f34039 Limit _XOPEN_SOURCE to Linux. POSIX feature macros are a mess. Reportedly, FreeBSD also breaks with _XOPEN_SOURCE, so try leaving it unset by default. Update-Note: It's possible this will break yet another obscure UNIX. Hopefully we can eventually find a combination that works? Bug: 471 Change-Id: I103f8093110d343789b9c5a22eb056ab78d9cd14 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/51145 Reviewed-by: Adam Langley ---- ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/CMakeLists.txt.orig 2022-08-19 10:54:32.212105000 +0200 -+++ ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/CMakeLists.txt 2022-08-19 10:55:12.577991000 +0200 +--- ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/CMakeLists.txt.orig 2022-08-19 10:54:32 UTC ++++ ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/CMakeLists.txt @@ -21,8 +21,11 @@ endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -fno-common -std=c11") endif() -# pthread_rwlock_t requires a feature flag. -if(NOT WIN32) +# pthread_rwlock_t on Linux requires a feature flag. We limit this to Linux +# because, on Apple platforms, it instead disables APIs we use. See compat(5) +# and sys/cdefs.h. Reportedly, FreeBSD also breaks when this is set. See +# https://crbug.com/boringssl/471. +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_XOPEN_SOURCE=700") endif() diff --git a/net-im/libsignal-node/files/patch-powerpc64le b/net-im/libsignal-node/files/patch-powerpc64le index 180d363a424a..1d7511228818 100644 --- a/net-im/libsignal-node/files/patch-powerpc64le +++ b/net-im/libsignal-node/files/patch-powerpc64le @@ -1,11 +1,11 @@ ---- ../boring-e1c719c0964ba37e6935355e9bf19821b072797e/boring-sys/deps/boringssl/CMakeLists.txt.orig 2021-09-03 00:17:34.000000000 +0200 -+++ ../boring-e1c719c0964ba37e6935355e9bf19821b072797e/boring-sys/deps/boringssl/CMakeLists.txt 2022-09-06 09:18:01.142118000 +0200 +--- ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/CMakeLists.txt.orig 2021-09-03 00:17:34 UTC ++++ ../boring-b95cb545b97395cdf5da36814f7dfb6e3856a99c/boring-sys/deps/boringssl/CMakeLists.txt @@ -86,7 +89,7 @@ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "mips") # Just to avoid the “unknown processor” error. set(ARCH "generic") -elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le") +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "powerpc64le|ppc64le") set(ARCH "ppc64le") else() message(FATAL_ERROR "Unknown processor:" ${CMAKE_SYSTEM_PROCESSOR})