Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Nov 2019 00:51:29 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r518282 - head/security/nss/files
Message-ID:  <201911240051.xAO0pT71035979@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Sun Nov 24 00:51:28 2019
New Revision: 518282
URL: https://svnweb.freebsd.org/changeset/ports/518282

Log:
  security/nss: unbreak aarch64 on -CURRENT
  
  blinit.c:159:24: error: expected readable system register
          id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
                         ^
  /usr/include/machine/armreg.h:61:19: note: expanded from macro 'READ_SPECIALREG'
          __asm __volatile("mrs   %0, " __STRING(reg) : "=&r" (_val));    \
                           ^
  <inline asm>:1:10: note: instantiated into assembly here
          mrs     x8, (((3) << 19) | ((0) << 16) | ((0) << 12) | ((6) << 8) | ((0) << 5))
                      ^
  blinit.c:160:28: error: implicit declaration of function 'ID_AA64ISAR0_AES' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
          arm_aes_support_ = ID_AA64ISAR0_AES(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE && disable_hw_aes == NULL;
                             ^
  blinit.c:162:29: error: implicit declaration of function 'ID_AA64ISAR0_SHA1' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
          arm_sha1_support_ = ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE;
                              ^
  blinit.c:162:29: note: did you mean 'ID_AA64ISAR0_AES'?
  blinit.c:160:28: note: 'ID_AA64ISAR0_AES' declared here
          arm_aes_support_ = ID_AA64ISAR0_AES(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE && disable_hw_aes == NULL;
                             ^
  blinit.c:163:29: error: implicit declaration of function 'ID_AA64ISAR0_SHA2' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
          arm_sha2_support_ = ID_AA64ISAR0_SHA2(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE;
                              ^
  blinit.c:163:29: note: did you mean 'ID_AA64ISAR0_SHA1'?
  blinit.c:162:29: note: 'ID_AA64ISAR0_SHA1' declared here
          arm_sha1_support_ = ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE;
                              ^
  
  PR:		242104
  Reported by:	pkg-fallout
  Submitted by:	Mikaƫl Urankar

Modified:
  head/security/nss/files/patch-bug1575843   (contents, props changed)
  head/security/nss/files/patch-lib_freebl_blinit.c   (contents, props changed)

Modified: head/security/nss/files/patch-bug1575843
==============================================================================
--- head/security/nss/files/patch-bug1575843	Sun Nov 24 00:34:55 2019	(r518281)
+++ head/security/nss/files/patch-bug1575843	Sun Nov 24 00:51:28 2019	(r518282)
@@ -44,17 +44,26 @@ elf_aux_info is similar to getauxval but is nop on aar
      if (getauxval) {
          long hwcaps = getauxval(AT_HWCAP);
          arm_aes_support_ = hwcaps & HWCAP_AES && disable_hw_aes == NULL;
-@@ -145,6 +153,14 @@ CheckARMSupport()
+@@ -145,6 +153,23 @@ CheckARMSupport()
          arm_sha1_support_ = hwcaps & HWCAP_SHA1;
          arm_sha2_support_ = hwcaps & HWCAP_SHA2;
      }
 +#elif defined(__FreeBSD__)
++#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
 +    uint64_t id_aa64isar0;
-+    id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
-+    arm_aes_support_ = ID_AA64ISAR0_AES(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE && disable_hw_aes == NULL;
-+    arm_pmull_support_ = ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL && disable_pmull == NULL;
-+    arm_sha1_support_ = ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE;
-+    arm_sha2_support_ = ID_AA64ISAR0_SHA2(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE;
++    id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
++    arm_aes_support_ = ID_AA64ISAR0_AES_VAL(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE && disable_hw_aes == NULL;
++    arm_pmull_support_ = ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL && disable_pmull == NULL;
++    arm_sha1_support_ = ID_AA64ISAR0_SHA1_VAL(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE;
++    arm_sha2_support_ = ID_AA64ISAR0_SHA2_VAL(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE;
 +#endif /* defined(__linux__) */
      /* aarch64 must support NEON. */
      arm_neon_support_ = disable_arm_neon == NULL;

Modified: head/security/nss/files/patch-lib_freebl_blinit.c
==============================================================================
--- head/security/nss/files/patch-lib_freebl_blinit.c	Sun Nov 24 00:34:55 2019	(r518281)
+++ head/security/nss/files/patch-lib_freebl_blinit.c	Sun Nov 24 00:51:28 2019	(r518282)
@@ -4,23 +4,23 @@ https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=2400
 
 --- lib/freebl/blinit.c.orig	2019-08-30 15:46:32 UTC
 +++ lib/freebl/blinit.c
-@@ -154,12 +154,14 @@ CheckARMSupport()
-         arm_sha2_support_ = hwcaps & HWCAP_SHA2;
-     }
- #elif defined(__FreeBSD__)
+@@ -163,12 +163,14 @@ CheckARMSupport()
+ #ifndef ID_AA64ISAR0_SHA2_VAL
+ #define ID_AA64ISAR0_SHA2_VAL ID_AA64ISAR0_SHA2
+ #endif
 -    uint64_t id_aa64isar0;
--    id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
--    arm_aes_support_ = ID_AA64ISAR0_AES(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE && disable_hw_aes == NULL;
--    arm_pmull_support_ = ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL && disable_pmull == NULL;
--    arm_sha1_support_ = ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE;
--    arm_sha2_support_ = ID_AA64ISAR0_SHA2(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE;
+-    id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
+-    arm_aes_support_ = ID_AA64ISAR0_AES_VAL(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE && disable_hw_aes == NULL;
+-    arm_pmull_support_ = ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL && disable_pmull == NULL;
+-    arm_sha1_support_ = ID_AA64ISAR0_SHA1_VAL(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE;
+-    arm_sha2_support_ = ID_AA64ISAR0_SHA2_VAL(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE;
 +    if (!PR_GetEnvSecure("QEMU_EMULATING")) {
 +        uint64_t id_aa64isar0;
-+        id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
-+        arm_aes_support_ = ID_AA64ISAR0_AES(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE && disable_hw_aes == NULL;
-+        arm_pmull_support_ = ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL && disable_pmull == NULL;
-+        arm_sha1_support_ = ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE;
-+        arm_sha2_support_ = ID_AA64ISAR0_SHA2(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE;
++        id_aa64isar0 = READ_SPECIALREG(id_aa64isar0_el1);
++        arm_aes_support_ = ID_AA64ISAR0_AES_VAL(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE && disable_hw_aes == NULL;
++        arm_pmull_support_ = ID_AA64ISAR0_AES_VAL(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL && disable_pmull == NULL;
++        arm_sha1_support_ = ID_AA64ISAR0_SHA1_VAL(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE;
++        arm_sha2_support_ = ID_AA64ISAR0_SHA2_VAL(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE;
 +    }
  #endif /* defined(__linux__) */
      /* aarch64 must support NEON. */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201911240051.xAO0pT71035979>