From owner-svn-ports-head@freebsd.org Wed Mar 11 19:59:59 2020 Return-Path: Delivered-To: svn-ports-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 24F2C269059; Wed, 11 Mar 2020 19:59:59 +0000 (UTC) (envelope-from cem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 48d2qf3Cs2z3Nnv; Wed, 11 Mar 2020 19:59:58 +0000 (UTC) (envelope-from cem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B905C19B5D; Wed, 11 Mar 2020 19:59:57 +0000 (UTC) (envelope-from cem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 02BJxvsd079268; Wed, 11 Mar 2020 19:59:57 GMT (envelope-from cem@FreeBSD.org) Received: (from cem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 02BJxvll079264; Wed, 11 Mar 2020 19:59:57 GMT (envelope-from cem@FreeBSD.org) Message-Id: <202003111959.02BJxvll079264@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cem set sender to cem@FreeBSD.org using -f From: Conrad Meyer Date: Wed, 11 Mar 2020 19:59:57 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r528250 - head/www/chromium/files X-SVN-Group: ports-head X-SVN-Commit-Author: cem X-SVN-Commit-Paths: head/www/chromium/files X-SVN-Commit-Revision: 528250 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Mar 2020 19:59:59 -0000 Author: cem (src committer) Date: Wed Mar 11 19:59:56 2020 New Revision: 528250 URL: https://svnweb.freebsd.org/changeset/ports/528250 Log: www/chromium: Fix aarch64 by reapplying r527876 It was lost in the 80.x update, unfortunately. Mea culpa. Reported by: mikael Discussed with: jrm Approved by: mikael Differential Revision: https://reviews.freebsd.org/D24026 Modified: head/www/chromium/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c head/www/chromium/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h head/www/chromium/files/patch-third__party_zlib_arm__features.c Modified: head/www/chromium/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c ============================================================================== --- head/www/chromium/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c Wed Mar 11 19:49:34 2020 (r528249) +++ head/www/chromium/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c Wed Mar 11 19:59:56 2020 (r528250) @@ -1,6 +1,6 @@ --- third_party/boringssl/src/crypto/cpu-aarch64-linux.c.orig 2020-03-03 18:55:22 UTC +++ third_party/boringssl/src/crypto/cpu-aarch64-linux.c -@@ -14,49 +14,35 @@ +@@ -14,49 +14,45 @@ #include @@ -17,12 +17,10 @@ - extern uint32_t OPENSSL_armcap_P; +-void OPENSSL_cpuid_setup(void) { +- unsigned long hwcap = getauxval(AT_HWCAP); +#include +#include -+ - void OPENSSL_cpuid_setup(void) { -- unsigned long hwcap = getauxval(AT_HWCAP); -+ uint64_t id_aa64isar0; - // See /usr/include/asm/hwcap.h on an aarch64 installation for the source of - // these values. @@ -31,30 +29,42 @@ - static const unsigned long kPMULL = 1 << 4; - static const unsigned long kSHA1 = 1 << 5; - static const unsigned long kSHA256 = 1 << 6; -+ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1); ++#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 - if ((hwcap & kNEON) == 0) { - // Matching OpenSSL, if NEON is missing, don't report other features - // either. - return; - } -- ++void OPENSSL_cpuid_setup(void) { ++ uint64_t id_aa64isar0; + ++ id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1); ++ OPENSSL_armcap_P |= ARMV7_NEON; - if (hwcap & kAES) { -+ if (ID_AA64ISAR0_AES(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE) { ++ if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE) { OPENSSL_armcap_P |= ARMV8_AES; } - if (hwcap & kPMULL) { -+ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) { ++ if (ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) { OPENSSL_armcap_P |= ARMV8_PMULL; } - if (hwcap & kSHA1) { -+ if (ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) { ++ if (ID_AA64ISAR0_SHA1_VAL(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) { OPENSSL_armcap_P |= ARMV8_SHA1; } - if (hwcap & kSHA256) { -+ if(ID_AA64ISAR0_SHA2(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE) { ++ if(ID_AA64ISAR0_SHA2_VAL(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE) { OPENSSL_armcap_P |= ARMV8_SHA256; } } Modified: head/www/chromium/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h ============================================================================== --- head/www/chromium/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h Wed Mar 11 19:49:34 2020 (r528249) +++ head/www/chromium/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h Wed Mar 11 19:59:56 2020 (r528250) @@ -9,7 +9,7 @@ #include #include -@@ -16,30 +14,19 @@ +@@ -16,30 +14,25 @@ #if HAVE_ARM64_CRC32C @@ -19,12 +19,18 @@ -// getauxval() is not available on Android until API level 20. Link it as a weak -// symbol. -extern "C" unsigned long getauxval(unsigned long type) __attribute__((weak)); -- ++#include ++#include + -#define AT_HWCAP 16 -#endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL -- -+#include -+#include ++#ifndef ID_AA64ISAR0_AES_VAL ++#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES ++#endif ++#ifndef ID_AA64ISAR0_CRC32_VAL ++#define ID_AA64ISAR0_CRC32_VAL ID_AA64ISAR0_CRC32 ++#endif + namespace crc32c { -inline bool CanUseArm64Linux() { @@ -42,11 +48,9 @@ + inline bool CanUseArm64Linux() { + uint64_t id_aa64isar0; + -+ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1); -+ if ((ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) && \ -+ (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE)) -+ return true; -+ return false; ++ id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1); ++ return ((ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) && ++ (ID_AA64ISAR0_CRC32_VAL(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE)); + } } // namespace crc32c Modified: head/www/chromium/files/patch-third__party_zlib_arm__features.c ============================================================================== --- head/www/chromium/files/patch-third__party_zlib_arm__features.c Wed Mar 11 19:49:34 2020 (r528249) +++ head/www/chromium/files/patch-third__party_zlib_arm__features.c Wed Mar 11 19:59:56 2020 (r528250) @@ -1,39 +1,53 @@ --- third_party/zlib/arm_features.c.orig 2020-03-03 18:54:06 UTC +++ third_party/zlib/arm_features.c -@@ -16,6 +16,10 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; +@@ -12,10 +12,24 @@ + int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0; + int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; + ++/* ++ * FreeBSD: we implicitly inherit ARMV8_OS_LINUX via zlib/BUILD.gn and ++ * "is_linux," which is true for FreeBSD builds. ++ */ + #if defined(ARMV8_OS_ANDROID) || defined(ARMV8_OS_LINUX) || defined(ARMV8_OS_FUCHSIA) #include #endif +#if defined(__FreeBSD__) -+#include +#include -+#else ++#include ++#ifndef ID_AA64ISAR0_AES_VAL ++#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES ++#endif ++#ifndef ID_AA64ISAR0_CRC32_VAL ++#define ID_AA64ISAR0_CRC32_VAL ID_AA64ISAR0_CRC32 ++#endif ++#else /* !__FreeBSD__ */ #if defined(ARMV8_OS_ANDROID) #include #elif defined(ARMV8_OS_LINUX) -@@ -30,6 +34,7 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; +@@ -30,6 +44,7 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; #else #error arm_features.c ARM feature detection in not defined for your platform #endif -+#endif ++#endif /* __FreeBSD__ */ static void _arm_check_features(void); -@@ -68,14 +73,24 @@ static void _arm_check_features(void) +@@ -68,14 +83,24 @@ static void _arm_check_features(void) arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM_FEATURE_CRC32); arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM_FEATURE_PMULL); #elif defined(ARMV8_OS_LINUX) && defined(__aarch64__) +#if defined(__FreeBSD__) -+ uint64_t id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1); -+ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) -+ arm_cpu_enable_pmull = 1; -+ if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) -+ arm_cpu_enable_crc32 = 1; ++ uint64_t id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1); ++ arm_cpu_enable_pmull = ++ (ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL); ++ arm_cpu_enable_crc32 = ++ (ID_AA64ISAR0_CRC32_VAL(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE); +#else unsigned long features = getauxval(AT_HWCAP); arm_cpu_enable_crc32 = !!(features & HWCAP_CRC32); arm_cpu_enable_pmull = !!(features & HWCAP_PMULL); -+#endif ++#endif /* __FreeBSD__ */ #elif defined(ARMV8_OS_LINUX) && (defined(__ARM_NEON) || defined(__ARM_NEON__)) +#if !defined(__FreeBSD__) /* Query HWCAP2 for ARMV8-A SoCs running in aarch32 mode */