| Message ID | 20250129094940.2643944-1-yury.khrustalev@arm.com (mailing list archive) |
|---|---|
| Headers |
Return-Path: <libc-alpha-bounces~patchwork=sourceware.org@sourceware.org> 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 0F7753857C6A for <patchwork@sourceware.org>; Wed, 29 Jan 2025 09:50:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0F7753857C6A 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 C8D0B3857B9F for <libc-alpha@sourceware.org>; Wed, 29 Jan 2025 09:50:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C8D0B3857B9F 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 C8D0B3857B9F 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=1738144200; cv=none; b=q4WQvODick5iu4sNGaKtR4z+2WfS2525HS+BAH3qArvZ0h6nEGLNNidPZQIBOmm1OVph0prH7YHzW/5BCdhFMJrnpB2A/wOoUR6Rv+SxW8AaRK3gRVO4kREyMgLQ294cNHi5a+5mW2Jn2BAi7Xo1SqABZMWzmpkKparQWysNqr8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1738144200; c=relaxed/simple; bh=jfOIafBN2cDDZfYa/0P4DpLyTLGF8jff/OkGbe+n4pc=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=eOQQ7LPl8GVfImUume21xOl6hm5RZszjPzv58XpacHN5Mn5dG+bhC3hCIBeLaAdbF8eD2L7TwSg0AD8x8Ny8IOXMO1OFJWzoNL16mAmX1mp2MvFwZpRmh+ZmAtoDgiiWotNNKa3htQTRjbE+Q2I+vTm5XDpDwgiw5RzvGZgKThA= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C8D0B3857B9F 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 7C0EB497; Wed, 29 Jan 2025 01:50:26 -0800 (PST) Received: from udebian.localdomain (unknown [10.1.37.167]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E62623F694; Wed, 29 Jan 2025 01:49:59 -0800 (PST) From: Yury Khrustalev <yury.khrustalev@arm.com> To: libc-alpha@sourceware.org Cc: adhemerval.zanella@linaro.org Subject: [PATCH v3 0/5] Add tests for Guarded Control Stack Date: Wed, 29 Jan 2025 09:49:35 +0000 Message-Id: <20250129094940.2643944-1-yury.khrustalev@arm.com> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00, KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no 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 <libc-alpha.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/libc-alpha>, <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/libc-alpha/> List-Post: <mailto:libc-alpha@sourceware.org> List-Help: <mailto:libc-alpha-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/libc-alpha>, <mailto:libc-alpha-request@sourceware.org?subject=subscribe> Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org |
| Series |
Add tests for Guarded Control Stack
|
|
Message
Yury Khrustalev
Jan. 29, 2025, 9:49 a.m. UTC
This patch adds AArch64 specific tests related to Guarded Control Stack [1]. It also adds new configure check for linker support for the "-z gcs=..." option. There might be better ways of arranging these tests in terms of using the test framework of the library. Any feedback is appreciated. These new tests are AArch64 specific. Moreover, they are included only if linker supports the "-z gcs=<value>" option. If built, these tests will run on systems with and without HWCAP_GCS. In the latter case the tests will be reported as UNSUPPORTED. When runtime target supports GCS, tests are run with all supported values of the GCS tunable to check its effects. Regression tested on aarch64 and no regressions have been found. base commit: 9a31eb64db OK for trunk? [1] https://developer.arm.com/documentation/ddi0487/ka/ (chapter D11) Changes since v2: - Added configure check for linker support of the "-z gcs=..." option to only enabled GCS related tests when it makes sense to do so. - Fixed typos in copyright years in some new files. Changes since v1: - Fixed test compilation error due to undefine macro GCS_MAGIC. Link to v1: https://inbox.sourceware.org/libc-alpha/20250123141401.3257507-1-yury.khrustalev@arm.com/ --- Yury Khrustalev (5): aarch64: Add configure check for linker support for -z gcs aarch64: Add tests for Guarded Control Stack aarch64: Add GCS tests for transitive dependencies aarch64: Add GCS tests for dlopen aarch64: Add GCS test with signal handler Makeconfig | 2 +- configure | 36 +++++ configure.ac | 5 + sysdeps/unix/sysv/linux/aarch64/Makefile | 129 +++++++++++++++++- .../unix/sysv/linux/aarch64/tst-gcs-abort.sh | 40 ++++++ .../linux/aarch64/tst-gcs-disabled-static.c | 1 + .../sysv/linux/aarch64/tst-gcs-disabled.c | 2 + .../linux/aarch64/tst-gcs-dlopen-disabled.c | 3 + .../linux/aarch64/tst-gcs-dlopen-enforced.c | 3 + .../aarch64/tst-gcs-dlopen-optional-off.c | 3 + .../aarch64/tst-gcs-dlopen-optional-on.c | 3 + .../linux/aarch64/tst-gcs-dlopen-override.c | 3 + .../unix/sysv/linux/aarch64/tst-gcs-dlopen.c | 62 +++++++++ .../linux/aarch64/tst-gcs-enforced-abort.c | 2 + .../aarch64/tst-gcs-enforced-static-abort.c | 1 + .../linux/aarch64/tst-gcs-enforced-static.c | 1 + .../sysv/linux/aarch64/tst-gcs-enforced.c | 2 + .../unix/sysv/linux/aarch64/tst-gcs-helper.h | 39 ++++++ .../unix/sysv/linux/aarch64/tst-gcs-mod1.c | 27 ++++ .../unix/sysv/linux/aarch64/tst-gcs-mod2.c | 25 ++++ .../unix/sysv/linux/aarch64/tst-gcs-mod3.c | 25 ++++ .../sysv/linux/aarch64/tst-gcs-noreturn.c | 100 ++++++++++++++ .../sysv/linux/aarch64/tst-gcs-optional-off.c | 2 + .../sysv/linux/aarch64/tst-gcs-optional-on.c | 2 + .../aarch64/tst-gcs-optional-static-off.c | 1 + .../aarch64/tst-gcs-optional-static-on.c | 1 + .../linux/aarch64/tst-gcs-override-static.c | 1 + .../sysv/linux/aarch64/tst-gcs-override.c | 2 + .../linux/aarch64/tst-gcs-shared-disabled.c | 2 + .../aarch64/tst-gcs-shared-enforced-abort.c | 2 + .../linux/aarch64/tst-gcs-shared-optional.c | 2 + .../linux/aarch64/tst-gcs-shared-override.c | 2 + .../unix/sysv/linux/aarch64/tst-gcs-shared.c | 41 ++++++ .../sysv/linux/aarch64/tst-gcs-skeleton.c | 43 ++++++ 34 files changed, 613 insertions(+), 2 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-abort.sh create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-disabled-static.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-disabled.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-disabled.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-enforced.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-optional-off.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-optional-on.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-override.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-abort.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-static-abort.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-static.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-helper.h create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod1.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod2.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod3.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-noreturn.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-off.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-on.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-static-off.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-static-on.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-override-static.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-override.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-disabled.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-enforced-abort.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-optional.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-override.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared.c create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-skeleton.c