From owner-svn-ports-all@freebsd.org Mon Sep 14 17:04:04 2020 Return-Path: Delivered-To: svn-ports-all@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 7363D3DC938; Mon, 14 Sep 2020 17:04:04 +0000 (UTC) (envelope-from mikael@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 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 4Bqt4N2TxQz40nn; Mon, 14 Sep 2020 17:04:04 +0000 (UTC) (envelope-from mikael@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 1FA4F1A61C; Mon, 14 Sep 2020 17:04:04 +0000 (UTC) (envelope-from mikael@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 08EH44mA080650; Mon, 14 Sep 2020 17:04:04 GMT (envelope-from mikael@FreeBSD.org) Received: (from mikael@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 08EH43c3080649; Mon, 14 Sep 2020 17:04:03 GMT (envelope-from mikael@FreeBSD.org) Message-Id: <202009141704.08EH43c3080649@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mikael set sender to mikael@FreeBSD.org using -f From: Mikael Urankar Date: Mon, 14 Sep 2020 17:04:03 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org Subject: svn commit: r548632 - branches/2020Q3/security/nss/files X-SVN-Group: ports-branches X-SVN-Commit-Author: mikael X-SVN-Commit-Paths: branches/2020Q3/security/nss/files X-SVN-Commit-Revision: 548632 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Sep 2020 17:04:04 -0000 Author: mikael Date: Mon Sep 14 17:04:03 2020 New Revision: 548632 URL: https://svnweb.freebsd.org/changeset/ports/548632 Log: MFH: r548091 security/nss: fix build on aarch64 Import upstream patch from https://bugzilla.mozilla.org/show_bug.cgi?id=1659256 PR: 249053 Reported by: garga@ Approved by: jbeich@ Approved by: ports-secteam (joneum) Added: branches/2020Q3/security/nss/files/patch-bug1659256 - copied unchanged from r548091, head/security/nss/files/patch-bug1659256 Modified: Directory Properties: branches/2020Q3/ (props changed) Copied: branches/2020Q3/security/nss/files/patch-bug1659256 (from r548091, head/security/nss/files/patch-bug1659256) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2020Q3/security/nss/files/patch-bug1659256 Mon Sep 14 17:04:03 2020 (r548632, copy of r548091, head/security/nss/files/patch-bug1659256) @@ -0,0 +1,105 @@ +# HG changeset patch +# User Daiki Ueno +# Date 1599626828 -7200 +# Node ID b971c77c0d68d76c086a0df21841efb813b78c7b +# Parent e524a577761d8d61ff096121a3c00bf22f2cfa94 +Bug 1659256, add gcc version check on AArch64 optimization, r=rrelyea + +Summary: As described in https://access.redhat.com/solutions/19458, +gcc version in RHEL-7 is still 4.8.x and cannot compile the newly +added aes-armv8.c. There is a version check already for 32-bit arm, +but not for AArch64. This also removes NS_USE_GCC check added in bug +1652032 in favor of the automatic detection using CC_IS_* macros. + +Reviewers: rrelyea + +Reviewed By: rrelyea + +Subscribers: jmux, kjacobs + +Bug #: 1659256 + +Differential Revision: https://phabricator.services.mozilla.com/D87174 + +diff --git a/lib/freebl/Makefile b/lib/freebl/Makefile +--- lib/freebl/Makefile ++++ lib/freebl/Makefile +@@ -114,31 +114,47 @@ ifeq (,$(filter-out i386 x386 x86 x86_64 + $(OBJDIR)/gcm-x86.o: CFLAGS += -mpclmul -maes + $(OBJDIR)/aes-x86.o: CFLAGS += -mpclmul -maes + ifneq (,$(USE_64)$(USE_X32)) + DEFINES += -DNSS_X64 + else + DEFINES += -DNSS_X86 + endif + endif +-ifdef NS_USE_GCC + ifeq ($(CPU_ARCH),aarch64) +- DEFINES += -DUSE_HW_AES -DUSE_HW_SHA1 -DUSE_HW_SHA2 +- EXTRA_SRCS += aes-armv8.c gcm-aarch64.c sha1-armv8.c sha256-armv8.c +-endif ++ ifdef CC_IS_CLANG ++ DEFINES += -DUSE_HW_AES -DUSE_HW_SHA1 -DUSE_HW_SHA2 ++ EXTRA_SRCS += aes-armv8.c gcm-aarch64.c sha1-armv8.c sha256-armv8.c ++ else ifeq (1,$(CC_IS_GCC)) ++ # GCC versions older than 4.9 don't support ARM AES. The check ++ # is done in two parts, first allows "major.minor" == "4.9", ++ # and then rejects any major versions prior to 5. Note that ++ # there has been no GCC 4.10, as it was renamed to GCC 5. ++ ifneq (,$(filter 4.9,$(word 1,$(GCC_VERSION)).$(word 2,$(GCC_VERSION)))) ++ DEFINES += -DUSE_HW_AES -DUSE_HW_SHA1 -DUSE_HW_SHA2 ++ EXTRA_SRCS += aes-armv8.c gcm-aarch64.c sha1-armv8.c sha256-armv8.c ++ endif ++ ifeq (,$(filter 0 1 2 3 4,$(word 1,$(GCC_VERSION)))) ++ DEFINES += -DUSE_HW_AES -DUSE_HW_SHA1 -DUSE_HW_SHA2 ++ EXTRA_SRCS += aes-armv8.c gcm-aarch64.c sha1-armv8.c sha256-armv8.c ++ endif ++ endif + endif + ifeq ($(CPU_ARCH),arm) + ifndef NSS_DISABLE_ARM32_NEON + EXTRA_SRCS += gcm-arm32-neon.c + endif + ifdef CC_IS_CLANG + DEFINES += -DUSE_HW_AES -DUSE_HW_SHA1 -DUSE_HW_SHA2 + EXTRA_SRCS += aes-armv8.c sha1-armv8.c sha256-armv8.c + else ifeq (1,$(CC_IS_GCC)) +- # Old compiler doesn't support ARM AES. ++ # GCC versions older than 4.9 don't support ARM AES. The check ++ # is done in two parts, first allows "major.minor" == "4.9", ++ # and then rejects any major versions prior to 5. Note that ++ # there has been no GCC 4.10, as it was renamed to GCC 5. + ifneq (,$(filter 4.9,$(word 1,$(GCC_VERSION)).$(word 2,$(GCC_VERSION)))) + DEFINES += -DUSE_HW_AES -DUSE_HW_SHA1 -DUSE_HW_SHA2 + EXTRA_SRCS += aes-armv8.c sha1-armv8.c sha256-armv8.c + endif + ifeq (,$(filter 0 1 2 3 4,$(word 1,$(GCC_VERSION)))) + DEFINES += -DUSE_HW_AES -DUSE_HW_SHA1 -DUSE_HW_SHA2 + EXTRA_SRCS += aes-armv8.c sha1-armv8.c sha256-armv8.c + endif +@@ -723,24 +739,22 @@ USES_SOFTFLOAT_ABI := $(shell $(CC) -o - + $(OBJDIR)/$(PROG_PREFIX)aes-armv8$(OBJ_SUFFIX): CFLAGS += -march=armv8-a -mfpu=crypto-neon-fp-armv8$(if $(USES_SOFTFLOAT_ABI), -mfloat-abi=softfp) + $(OBJDIR)/$(PROG_PREFIX)sha1-armv8$(OBJ_SUFFIX): CFLAGS += -march=armv8-a -mfpu=crypto-neon-fp-armv8$(if $(USES_SOFTFLOAT_ABI), -mfloat-abi=softfp) + $(OBJDIR)/$(PROG_PREFIX)sha256-armv8$(OBJ_SUFFIX): CFLAGS += -march=armv8-a -mfpu=crypto-neon-fp-armv8$(if $(USES_SOFTFLOAT_ABI), -mfloat-abi=softfp) + ifndef NSS_DISABLE_ARM32_NEON + $(OBJDIR)/$(PROG_PREFIX)gcm-arm32-neon$(OBJ_SUFFIX): CFLAGS += -mfpu=neon$(if $(USES_SOFTFLOAT_ABI), -mfloat-abi=softfp) + endif + endif + +-ifdef NS_USE_GCC + ifeq ($(CPU_ARCH),aarch64) + $(OBJDIR)/$(PROG_PREFIX)aes-armv8$(OBJ_SUFFIX): CFLAGS += -march=armv8-a+crypto + $(OBJDIR)/$(PROG_PREFIX)gcm-aarch64$(OBJ_SUFFIX): CFLAGS += -march=armv8-a+crypto + $(OBJDIR)/$(PROG_PREFIX)sha1-armv8$(OBJ_SUFFIX): CFLAGS += -march=armv8-a+crypto + $(OBJDIR)/$(PROG_PREFIX)sha256-armv8$(OBJ_SUFFIX): CFLAGS += -march=armv8-a+crypto + endif +-endif + + ifeq ($(CPU_ARCH),ppc) + ifndef NSS_DISABLE_ALTIVEC + $(OBJDIR)/$(PROG_PREFIX)gcm-ppc$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec -mvsx + $(OBJDIR)/$(PROG_PREFIX)gcm$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec -mvsx + $(OBJDIR)/$(PROG_PREFIX)rijndael$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec -mvsx + $(OBJDIR)/$(PROG_PREFIX)sha512$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec -mvsx \ + -funroll-loops -fpeel-loops +