From patchwork Wed Jan 29 09:49:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Khrustalev X-Patchwork-Id: 105599 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 48F3B3857C47 for ; Wed, 29 Jan 2025 09:52:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 48F3B3857C47 X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id AA68B3858D20 for ; Wed, 29 Jan 2025 09:50:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AA68B3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org AA68B3858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1738144205; cv=none; b=CsZREJ3qSc8Lb5fFOpuxhlG6h6XB+6H3yfBBoRTfPT6tWSqymCJd575HhnycVpNvGqLkFFZefP0zy5EAXYbM1E5xq/F+IDnBPmhJLyMJTjEraxLsyIiTiekUTvSBozIVWK9evUMcTegysVzJs8QUkAt7aWveWkpCzdRBlR31du4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1738144205; c=relaxed/simple; bh=EblHcETQiO2eBubwTzlWswl0UWogbst9f/QEs/KVP04=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=YL4W3yShaHv0T4Bd4YJEewg0aS4k5PvDs6FQO3xIuCiRWo6rk/kyacs6VIbwpDi3W9Mb9IEIF2KKBT+cm8KONjnCfe6V7bzGO1gk8apcfRr52S3bvO5dG4DgSjFrYU2u8dPb/Ap9Cll1DgXFC/mNH1Z7UY3T4nF661l8DtvxsHk= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AA68B3858D20 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A745D497; Wed, 29 Jan 2025 01:50:31 -0800 (PST) Received: from udebian.localdomain (unknown [10.1.37.167]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1CE813F694; Wed, 29 Jan 2025 01:50:04 -0800 (PST) From: Yury Khrustalev To: libc-alpha@sourceware.org Cc: adhemerval.zanella@linaro.org Subject: [PATCH v3 1/5] aarch64: Add configure check for linker support for -z gcs Date: Wed, 29 Jan 2025 09:49:36 +0000 Message-Id: <20250129094940.2643944-2-yury.khrustalev@arm.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250129094940.2643944-1-yury.khrustalev@arm.com> References: <20250129094940.2643944-1-yury.khrustalev@arm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org --- configure | 36 ++++++++++++++++++++++++++++++++++++ configure.ac | 5 +++++ 2 files changed, 41 insertions(+) diff --git a/configure b/configure index eb8abd0054..19cae4aec7 100755 --- a/configure +++ b/configure @@ -8908,6 +8908,42 @@ printf "%s\n" "$libc_linker_feature" >&6; } config_vars="$config_vars load-address-ldflag = $libc_cv_load_address_ldflag" +# Check if linker supports GCS marking +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z gcs=always" >&5 +printf %s "checking for linker that supports -z gcs=always... " >&6; } +libc_linker_feature=no +cat > conftest.c <&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then + if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,-z,gcs=always -nostdlib \ + -nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \ + | grep "warning: -z gcs=always ignored" > /dev/null 2>&1; then + true + else + libc_linker_feature=yes + fi +fi +rm -f conftest* +if test $libc_linker_feature = yes; then + libc_cv_test_gcs=yes +else + libc_cv_test_gcs=no +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5 +printf "%s\n" "$libc_linker_feature" >&6; } +config_vars="$config_vars +have-test-cc-gcs = $libc_cv_test_gcs" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can build programs as PIE" >&5 printf %s "checking if we can build programs as PIE... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext diff --git a/configure.ac b/configure.ac index 050bfa65e3..4c30d5a5b7 100644 --- a/configure.ac +++ b/configure.ac @@ -1992,6 +1992,11 @@ LIBC_LINKER_FEATURE([-Ttext-segment=$libc_cv_pde_load_address], [libc_cv_load_address_ldflag=]) LIBC_CONFIG_VAR([load-address-ldflag], [$libc_cv_load_address_ldflag]) +# Check if linker supports GCS marking +LIBC_LINKER_FEATURE([-z gcs=always], [-Wl,-z,gcs=always], + [libc_cv_test_gcs=yes], [libc_cv_test_gcs=no]) +LIBC_CONFIG_VAR([have-test-cc-gcs], [$libc_cv_test_gcs]) + AC_MSG_CHECKING(if we can build programs as PIE) AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#ifdef PIE_UNSUPPORTED # error PIE is not supported