From patchwork Fri May 15 13:16:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 1291146 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=ayCrOGwr; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (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) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49NppR5yM0z9sT8 for ; Fri, 15 May 2020 23:16:47 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CBD0C3982E39; Fri, 15 May 2020 13:16:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CBD0C3982E39 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1589548605; bh=SZ1WCFSjy9g9/7CHfHV908aTDPKHENlyCPUS1SmoEkM=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=ayCrOGwr5aO8fIZlTbEpFUDXuReFgI10vfHK+pUAOFe6dtYxvRCbB1DQ15q1+VmfQ bh12iHbQ6gvO6IJasyM8JNqCZKevFYRoznUpamfz3sunr0l/nOlzZ4yGSOGUeLEDWZ SZ4lb/W75W5cwMTEMb0MknafS5rUmuRS4z2VsNw8= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by sourceware.org (Postfix) with ESMTPS id 9BC213982E26 for ; Fri, 15 May 2020 13:16:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 9BC213982E26 Received: by mail-pg1-x543.google.com with SMTP id u5so949680pgn.5 for ; Fri, 15 May 2020 06:16:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=SZ1WCFSjy9g9/7CHfHV908aTDPKHENlyCPUS1SmoEkM=; b=br5bnmfYSgbLNTky9B2krPdxqWOQDCWddJA7c/s8Qg2lx5NyA7wtBuJaJNYfd1idmp jmaMn7ObwBFrXEdfgB/yZrolAP2WIlmmnXo2+GFKFifP9GCD1324s3YxUdSaWw/cUXN0 Oj4Fl/nrVxPbtn3uwWzH/6lbTPephWhd8p+3XYRguKvNYDObQicS7mAIdZEzlYEHssmw 9+M99CLmPU2E32IwJjFfZ6n4qrciSt8CZOvJ0dxLK3fAmoCLRU4ykJROMj8EGMPG2bY7 chHt8P5dpFeuzxNMi4IfUABblFsBjXmkWzp/GS8gApltq1ttoSIJ7Gm2rvhSatxqXUmW 5CUA== X-Gm-Message-State: AOAM533xrfAeLuLhJkFcNFTZlkrRVoQhMzdH/iVN2LG67+/INJCO6AHI KvaaaLOffLJm01rKnw+k3jLk0sM2 X-Google-Smtp-Source: ABdhPJyDArpjOi52f4aYWBxTb0H765jymgH7508gXIkPFe0zpkHKM6ejIKgyZ1IhhcVY+yBSD5rDPw== X-Received: by 2002:a62:3812:: with SMTP id f18mr3731337pfa.173.1589548600860; Fri, 15 May 2020 06:16:40 -0700 (PDT) Received: from gnu-cfl-2.localdomain (c-69-181-90-243.hsd1.ca.comcast.net. [69.181.90.243]) by smtp.gmail.com with ESMTPSA id y8sm2054613pfg.216.2020.05.15.06.16.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 May 2020 06:16:40 -0700 (PDT) Received: from gnu-cfl-2.localdomain (localhost [IPv6:::1]) by gnu-cfl-2.localdomain (Postfix) with ESMTP id 39DAF1A0280; Fri, 15 May 2020 06:16:39 -0700 (PDT) To: gcc-patches@gcc.gnu.org Subject: [PATCH] x86: Also check if -fcf-protection works Date: Fri, 15 May 2020 06:16:38 -0700 Message-Id: <20200515131638.282949-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 X-Spam-Status: No, score=-14.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: "H.J. Lu via Gcc-patches" From: "H.J. Lu" Reply-To: "H.J. Lu" Cc: Richard Biener Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" When defaulting CET run-time support to auto, check if -fcf-protection works. Even if the stage1 GCC doesn't support -fcf-protection, since the final GCC does, CET run-time support will be enabled by default if binutils support CET. config/ PR bootstrap/95147 * cet.m4 (GCC_CET_FLAGS): Also check if -fcf-protection works when defaulting to auto. libatomic/ PR bootstrap/95147 * configure: Regenerated. libbacktrace/ PR bootstrap/95147 * configure: Regenerated. libgcc/ PR bootstrap/95147 * configure: Regenerated. libgfortran/ PR bootstrap/95147 * configure: Regenerated. libgomp/ PR bootstrap/95147 * configure: Regenerated. libitm/ PR bootstrap/95147 * configure: Regenerated. libobjc/ PR bootstrap/95147 * configure: Regenerated. libphobos/ PR bootstrap/95147 * configure: Regenerated. libquadmath/ PR bootstrap/95147 * configure: Regenerated. libsanitizer/ PR bootstrap/95147 * configure: Regenerated. libssp/ PR bootstrap/95147 * configure: Regenerated. libstdc++-v3/ PR bootstrap/95147 * configure: Regenerated. libvtv/ PR bootstrap/95147 * configure: Regenerated. zlib/ PR bootstrap/95147 * configure: Regenerated. --- config/cet.m4 | 3 +++ libatomic/configure | 3 +++ libbacktrace/configure | 3 +++ libgcc/configure | 3 +++ libgfortran/configure | 7 +++++-- libgomp/configure | 3 +++ libitm/configure | 3 +++ libobjc/configure | 7 +++++-- libphobos/configure | 11 +++++++---- libquadmath/configure | 3 +++ libsanitizer/configure | 3 +++ libssp/configure | 7 +++++-- libstdc++-v3/configure | 3 +++ libvtv/configure | 3 +++ zlib/configure | 7 +++++-- 15 files changed, 57 insertions(+), 12 deletions(-) diff --git a/config/cet.m4 b/config/cet.m4 index 63c6ea9ee02..2bb2c8a95ac 100644 --- a/config/cet.m4 +++ b/config/cet.m4 @@ -13,6 +13,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [], @@ -25,6 +27,7 @@ asm ("setssbsy"); ])], [enable_cet=yes], [enable_cet=no]) + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. diff --git a/libatomic/configure b/libatomic/configure index c4b4714abc0..478670a6fe7 100755 --- a/libatomic/configure +++ b/libatomic/configure @@ -15595,6 +15595,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15618,6 +15620,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. diff --git a/libbacktrace/configure b/libbacktrace/configure index 95d06c60be1..d851e807d2d 100755 --- a/libbacktrace/configure +++ b/libbacktrace/configure @@ -12169,6 +12169,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -12192,6 +12194,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. diff --git a/libgcc/configure b/libgcc/configure index a5d5ab84607..5d0c79bcd75 100755 --- a/libgcc/configure +++ b/libgcc/configure @@ -4913,6 +4913,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4936,6 +4938,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. diff --git a/libgfortran/configure b/libgfortran/configure index 3c8be061ede..97d9616e425 100755 --- a/libgfortran/configure +++ b/libgfortran/configure @@ -6014,6 +6014,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6037,6 +6039,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. @@ -12719,7 +12722,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12722 "configure" +#line 12725 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12825,7 +12828,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12828 "configure" +#line 12831 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/libgomp/configure b/libgomp/configure index 4a0e1498415..e5710b26749 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -16753,6 +16753,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -16776,6 +16778,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. diff --git a/libitm/configure b/libitm/configure index 2c451fb0a98..be70ea6f76f 100755 --- a/libitm/configure +++ b/libitm/configure @@ -17890,6 +17890,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -17913,6 +17915,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. diff --git a/libobjc/configure b/libobjc/configure index 018c9db76e8..6975a727d5e 100755 --- a/libobjc/configure +++ b/libobjc/configure @@ -3466,6 +3466,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3489,6 +3491,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. @@ -10775,7 +10778,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10778 "configure" +#line 10781 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -10881,7 +10884,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10884 "configure" +#line 10887 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/libphobos/configure b/libphobos/configure index c8137d4d572..4551e9fddef 100755 --- a/libphobos/configure +++ b/libphobos/configure @@ -1478,7 +1478,7 @@ Optional Features: --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer - --enable-cet enable Intel CET in target libraries [default=no] + --enable-cet enable Intel CET in target libraries [default=auto] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] @@ -5573,7 +5573,7 @@ if test "${enable_cet+set}" = set; then : esac else - enable_cet=no + enable_cet=auto fi @@ -5586,6 +5586,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5609,6 +5611,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. @@ -11734,7 +11737,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11737 "configure" +#line 11740 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11840,7 +11843,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11843 "configure" +#line 11846 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/libquadmath/configure b/libquadmath/configure index d995a2cfd25..dee79cf99a0 100755 --- a/libquadmath/configure +++ b/libquadmath/configure @@ -13039,6 +13039,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -13062,6 +13064,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. diff --git a/libsanitizer/configure b/libsanitizer/configure index 8d1aa6db492..7ec074491c1 100755 --- a/libsanitizer/configure +++ b/libsanitizer/configure @@ -16862,6 +16862,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -16885,6 +16887,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. diff --git a/libssp/configure b/libssp/configure index 7e54b16bfaf..2eb4c7998d5 100755 --- a/libssp/configure +++ b/libssp/configure @@ -4338,6 +4338,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4361,6 +4363,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. @@ -10996,7 +10999,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10999 "configure" +#line 11002 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11102,7 +11105,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11105 "configure" +#line 11108 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 24cc51c8bef..502f6602001 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -77488,6 +77488,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -77511,6 +77513,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. diff --git a/libvtv/configure b/libvtv/configure index 9d42cb88fb2..eced2b23ce0 100755 --- a/libvtv/configure +++ b/libvtv/configure @@ -15680,6 +15680,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15703,6 +15705,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. diff --git a/zlib/configure b/zlib/configure index 65005f131dc..ae1f1934911 100755 --- a/zlib/configure +++ b/zlib/configure @@ -4169,6 +4169,8 @@ case "$host" in auto) # Check if target supports multi-byte NOPs # and if assembler supports CET insn. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fcf-protection" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4192,6 +4194,7 @@ else enable_cet=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" ;; yes) # Check if assembler supports CET. @@ -10739,7 +10742,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10742 "configure" +#line 10745 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -10845,7 +10848,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10848 "configure" +#line 10851 "configure" #include "confdefs.h" #if HAVE_DLFCN_H