Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2215404/?format=api
{ "id": 2215404, "url": "http://patchwork.ozlabs.org/api/patches/2215404/?format=api", "web_url": "http://patchwork.ozlabs.org/project/glibc/patch/20260324141438.3094802-1-yury.khrustalev@arm.com/", "project": { "id": 41, "url": "http://patchwork.ozlabs.org/api/projects/41/?format=api", "name": "GNU C Library", "link_name": "glibc", "list_id": "libc-alpha.sourceware.org", "list_email": "libc-alpha@sourceware.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260324141438.3094802-1-yury.khrustalev@arm.com>", "list_archive_url": null, "date": "2026-03-24T14:14:38", "name": "tests: allow tests to append tunables", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "304ebb312483308667c49fb4b57a01505398676e", "submitter": { "id": 88214, "url": "http://patchwork.ozlabs.org/api/people/88214/?format=api", "name": "Yury Khrustalev", "email": "yury.khrustalev@arm.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/glibc/patch/20260324141438.3094802-1-yury.khrustalev@arm.com/mbox/", "series": [ { "id": 497299, "url": "http://patchwork.ozlabs.org/api/series/497299/?format=api", "web_url": "http://patchwork.ozlabs.org/project/glibc/list/?series=497299", "date": "2026-03-24T14:14:38", "name": "tests: allow tests to append tunables", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/497299/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2215404/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2215404/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "libc-alpha@sourceware.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "libc-alpha@sourceware.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=foss header.b=kFpU1sYu;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key,\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=foss header.b=kFpU1sYu", "sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com", "sourceware.org; spf=pass smtp.mailfrom=arm.com", "server2.sourceware.org;\n arc=none smtp.remote-ip=217.140.110.172" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fgBrf3fLJz1y1G\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 01:15:14 +1100 (AEDT)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 5D3294BB3BE6\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 24 Mar 2026 14:15:12 +0000 (GMT)", "from foss.arm.com (foss.arm.com [217.140.110.172])\n by sourceware.org (Postfix) with ESMTP id 614EE4BA2E0B\n for <libc-alpha@sourceware.org>; Tue, 24 Mar 2026 14:14:47 +0000 (GMT)", "from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BE8721476;\n Tue, 24 Mar 2026 07:14:40 -0700 (PDT)", "from fdebian.localdomain (G7GWP2TF97.cambridge.arm.com [10.1.38.42])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id\n 140FE3F915; Tue, 24 Mar 2026 07:14:45 -0700 (PDT)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 5D3294BB3BE6", "OpenDKIM Filter v2.11.0 sourceware.org 614EE4BA2E0B" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 614EE4BA2E0B", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 614EE4BA2E0B", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774361687; cv=none;\n b=Pyr5jTK9MJSdHhSzy2jxhlQAujc85TFbZFHqVJQpSpGWZSO5tu0jAx/gcFDuEb419a/bVO345O834TJTelqN2ViHpHCnPlwoIl48m8B+k9WHhujo/t7hiY8Bb3pqv9rP+uY+CYqjdVxXMLEgk9KjSvG8szYGFFMO4V5Avph03Y0=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1774361687; c=relaxed/simple;\n bh=XW30Sy7uj9ZJOcjYxfhDPWy3etZJ72SwNKo9pOXN5q8=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=RnkMWVt5E3kylfzXi6ZmVrSpM3eTIPDBHBL1RDL/dyYTlQX6SW/PEghP7jGb8dkfINLQazJfQ2jUAnEkxOprD88q0qvhT+uRQcDcGC2vksp8EV00u0yJfEYlXrpPWBNHhYl86sCVOI5GH8UDhgCaT06g4NOUKvDY2idp6QZN3nU=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "DKIM-Signature": "v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss;\n t=1774361686; bh=XW30Sy7uj9ZJOcjYxfhDPWy3etZJ72SwNKo9pOXN5q8=;\n h=From:To:Cc:Subject:Date:From;\n b=kFpU1sYur7QY3jPa+GB78IhJghW8am0uvbjFDFJnBWF5Y64GTSifEqUxHQDgH/mK4\n NC1K2bu2kyd/Y8pwfd4MV9JY5DRlvC24wEBJ0SZ4zqx6OzJ9hbP7+oqAiMW95uLJfa\n gdTydCRfYbOyuq2urOosCQswifrGmaKu17pDqAvM=", "From": "Yury Khrustalev <yury.khrustalev@arm.com>", "To": "libc-alpha@sourceware.org", "Cc": "Adhemerval Zanella <adhemerval.zanella@linaro.org>,\n Florian Weimer <fweimer@redhat.com>,\n Wilco Dijkstra <wilco.dijkstra@arm.com>", "Subject": "[PATCH] tests: allow tests to append tunables", "Date": "Tue, 24 Mar 2026 14:14:38 +0000", "Message-ID": "<20260324141438.3094802-1-yury.khrustalev@arm.com>", "X-Mailer": "git-send-email 2.47.3", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "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>,\n <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>,\n <mailto:libc-alpha-request@sourceware.org?subject=subscribe>", "Errors-To": "libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org" }, "content": "Many tests use Glibc tunables. The tunable values are provided via\nthe GLIBC_TUNABLES env variable. Tests set it in makefiles using\n\n tst-foo-ENV = GLIBC_TUNABLES=tunable=value\n\nThis overwrites environment for this test, so if another env var is\nset elsewhere, one of these changes would be lost. The correct way\nshould be to append to test's environment:\n\n tst-foo-ENV += GLIBC_TUNABLES=tunable=value\n\nHowever, if two or more tunables need to be set for the same test,\nthe 'tunable=value' part should be appended to previously defined\nGLIBC_TUNABLES env variable.\n\nThis commit adds 'tunable-add' that can be used to correctly append\nanother tunable to a test's environment. We also change tests in the\nmalloc and misc folder.\n\n---\nbase-commit: 9f5f18aab4\npasses regression on aarch64 and x86-64\n\n---\n Makeconfig | 12 +++\n Rules | 12 +--\n malloc/Makefile | 53 +++++-----\n sysdeps/unix/sysv/linux/aarch64/Makefile | 117 +++++++++++------------\n 4 files changed, 99 insertions(+), 95 deletions(-)", "diff": "diff --git a/Makeconfig b/Makeconfig\nindex 8fe7217dd7..9e01489ff9 100644\n--- a/Makeconfig\n+++ b/Makeconfig\n@@ -1479,6 +1479,18 @@ evaluate-test = $(..)scripts/evaluate-test.sh $(test-name) $$? \\\n \n endif # Makeconfig not yet included\n \n+# Correctly modify Glibc tunable environment variable for the test\n+# appending new param=value to the environment variable if it is\n+# already defined for this test:\n+# $(1) is test name and $(2) is param=value part that needs to be\n+# appended to the value of the GLIBC_TUNABLES variable.\n+define tunable-add\n+$(1)-ENV = $(if \\\n+$(findstring GLIBC_TUNABLES,$($(1)-ENV)),\\\n+$(patsubst GLIBC_TUNABLES=%,GLIBC_TUNABLES=%:$(2),$($(1)-ENV)),\\\n+$($(1)-ENV) GLIBC_TUNABLES=$(2))\n+endef\n+\n # Local Variables:\n # mode: makefile\n # End:\ndiff --git a/Rules b/Rules\nindex 9d8587a148..427a7535a4 100644\n--- a/Rules\n+++ b/Rules\n@@ -343,32 +343,32 @@ endif\n \n # All malloc-check tests will be run with MALLOC_CHECK_=3\n define malloc-check-ENVS\n-$(1)-malloc-check-ENV = MALLOC_CHECK_=3 \\\n-\t\t\tLD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so\n+$(1)-malloc-check-ENV += MALLOC_CHECK_=3 \\\n+\t\t\tLD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so\n endef\n $(foreach t,$(tests-malloc-check),$(eval $(call malloc-check-ENVS,$(t))))\n \n # All malloc-hugetlb1 tests will be run with GLIBC_TUNABLES=glibc.malloc.hugetlb=1\n define malloc-hugetlb1-ENVS\n-$(1)-malloc-hugetlb1-ENV += GLIBC_TUNABLES=glibc.malloc.hugetlb=1\n+$(call tunable-add,$(1)-malloc-hugetlb1,glibc.malloc.hugetlb=1)\n endef\n $(foreach t,$(tests-malloc-hugetlb1),$(eval $(call malloc-hugetlb1-ENVS,$(t))))\n \n # All malloc-hugetlb2 tests will be run with GLIBC_TUNABLE=glibc.malloc.hugetlb=2\n define malloc-hugetlb2-ENVS\n-$(1)-malloc-hugetlb2-ENV += GLIBC_TUNABLES=glibc.malloc.hugetlb=2\n+$(call tunable-add,$(1)-malloc-hugetlb2,glibc.malloc.hugetlb=2)\n endef\n $(foreach t,$(tests-malloc-hugetlb2),$(eval $(call malloc-hugetlb2-ENVS,$(t))))\n \n # All malloc-largetcache tests will be run with GLIBC_TUNABLE=glibc.malloc.tcache_max=1048576\n define malloc-largetcache-ENVS\n-$(1)-malloc-largetcache-ENV += GLIBC_TUNABLES=glibc.malloc.tcache_max=1048576\n+$(call tunable-add,$(1)-malloc-largetcache,glibc.malloc.tcache_max=1048576)\n endef\n $(foreach t,$(tests-malloc-largetcache),$(eval $(call malloc-largetcache-ENVS,$(t))))\n \n # mcheck tests need the debug DSO to support -lmcheck.\n define mcheck-ENVS\n-$(1)-mcheck-ENV = LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so\n+$(1)-mcheck-ENV += LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so\n endef\n $(foreach t,$(tests-mcheck),$(eval $(call mcheck-ENVS,$(t))))\n \ndiff --git a/malloc/Makefile b/malloc/Makefile\nindex fef5021298..ba540016f3 100644\n--- a/malloc/Makefile\n+++ b/malloc/Makefile\n@@ -437,18 +437,18 @@ endif\n malloc-check-env = \\\n MALLOC_CHECK_=3 \\\n LD_PRELOAD=$(objpfx)/libc_malloc_debug.so\n-\n-malloc-check-tunables-env = \\\n- GLIBC_TUNABLES=glibc.malloc.check=3 \\\n- LD_PRELOAD=$(objpfx)/libc_malloc_debug.so\n-\n-tst-malloc-check-ENV = $(malloc-check-env)\n-tst-malloc-usable-ENV = $(malloc-check-env)\n-tst-malloc-usable-threaded-main-ENV = $(malloc-check-env)\n-tst-malloc-usable-threaded-worker-ENV = $(malloc-check-env)\n-tst-malloc-usable-tunables-ENV = $(malloc-check-tunables-env)\n-tst-malloc-usable-tunables-threaded-main-ENV = $(malloc-check-tunables-env)\n-tst-malloc-usable-tunables-threaded-worker-ENV = $(malloc-check-tunables-env)\n+tst-malloc-check-ENV += $(malloc-check-env)\n+tst-malloc-usable-ENV += $(malloc-check-env)\n+tst-malloc-usable-threaded-main-ENV += $(malloc-check-env)\n+tst-malloc-usable-threaded-worker-ENV += $(malloc-check-env)\n+\n+malloc-check-tunables-env = LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n+tst-malloc-usable-tunables-ENV += $(malloc-check-tunables-env)\n+tst-malloc-usable-tunables-threaded-main-ENV += $(malloc-check-tunables-env)\n+tst-malloc-usable-tunables-threaded-worker-ENV += $(malloc-check-tunables-env)\n+$(eval $(call tunable-add,tst-malloc-usable-tunables,glibc.malloc.check=3))\n+$(eval $(call tunable-add,tst-malloc-usable-tunables-threaded-main,glibc.malloc.check=3))\n+$(eval $(call tunable-add,tst-malloc-usable-tunables-threaded-worker,glibc.malloc.check=3))\n \n CPPFLAGS-malloc-debug.c += -DUSE_TCACHE=0\n CPPFLAGS-malloc.c += -DUSE_TCACHE=1\n@@ -489,32 +489,31 @@ $(objpfx)tst-interpose-static-nothread: $(objpfx)tst-interpose-aux-nothread.o\n $(objpfx)tst-interpose-static-thread: \\\n $(objpfx)tst-interpose-aux-thread.o $(static-thread-library)\n \n-tst-dynarray-ENV = MALLOC_TRACE=$(objpfx)tst-dynarray.mtrace \\\n+tst-dynarray-ENV += MALLOC_TRACE=$(objpfx)tst-dynarray.mtrace \\\n \t\t LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n $(objpfx)tst-dynarray-mem.out: $(objpfx)tst-dynarray.out\n \t$(common-objpfx)malloc/mtrace $(objpfx)tst-dynarray.mtrace > $@; \\\n \t$(evaluate-test)\n \n-tst-dynarray-fail-ENV = MALLOC_TRACE=$(objpfx)tst-dynarray-fail.mtrace \\\n+tst-dynarray-fail-ENV += MALLOC_TRACE=$(objpfx)tst-dynarray-fail.mtrace \\\n \t\t\tLD_PRELOAD=$(objpfx)libc_malloc_debug.so\n $(objpfx)tst-dynarray-fail-mem.out: $(objpfx)tst-dynarray-fail.out\n \t$(common-objpfx)malloc/mtrace $(objpfx)tst-dynarray-fail.mtrace > $@; \\\n \t$(evaluate-test)\n \n-tst-compathooks-on-ENV = LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n-tst-compathooks-on-mcheck-ENV = LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n-tst-compathooks-on-malloc-check-ENV = \\\n+tst-compathooks-on-ENV += LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n+tst-compathooks-on-mcheck-ENV += LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n+tst-compathooks-on-malloc-check-ENV += \\\n \tLD_PRELOAD=$(objpfx)libc_malloc_debug.so\n-tst-mallocstate-ENV = LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n-tst-mallocstate-malloc-check-ENV = LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n+tst-mallocstate-ENV += LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n \n # The test needs malloc_get_state/malloc_set_state which is in\n # libc_malloc_debug.so.\n $(objpfx)tst-mallocstate: $(objpfx)libc_malloc_debug.so\n $(objpfx)tst-mallocstate-malloc-check: $(objpfx)libc_malloc_debug.so\n-tst-mallocstate-threaded-main-ENV = LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n+tst-mallocstate-threaded-main-ENV += LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n $(objpfx)tst-mallocstate-threaded-main: $(objpfx)libc_malloc_debug.so\n-tst-mallocstate-threaded-worker-ENV = LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n+tst-mallocstate-threaded-worker-ENV += LD_PRELOAD=$(objpfx)libc_malloc_debug.so\n $(objpfx)tst-mallocstate-threaded-worker: $(objpfx)libc_malloc_debug.so\n \n $(objpfx)tst-aligned-alloc-random.out: $(objpfx)tst-aligned_alloc-lib.so\n@@ -522,18 +521,18 @@ $(objpfx)tst-aligned-alloc-random-thread.out: $(objpfx)tst-aligned_alloc-lib.so\n $(objpfx)tst-aligned-alloc-random-thread-cross.out: $(objpfx)tst-aligned_alloc-lib.so\n $(objpfx)tst-malloc-random.out: $(objpfx)tst-aligned_alloc-lib.so\n \n-tst-aligned-alloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so\n-tst-aligned-alloc-random-thread-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so\n-tst-aligned-alloc-random-thread-cross-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so\n-tst-malloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so\n+tst-aligned-alloc-random-ENV += LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so\n+tst-aligned-alloc-random-thread-ENV += LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so\n+tst-aligned-alloc-random-thread-cross-ENV += LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so\n+tst-malloc-random-ENV += LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so\n \n-tst-free-aligned-sized-trace-ENV = MALLOC_TRACE=$(objpfx)tst-free-aligned-sized-mem.mtrace \\\n+tst-free-aligned-sized-trace-ENV += MALLOC_TRACE=$(objpfx)tst-free-aligned-sized-mem.mtrace \\\n \tLD_PRELOAD=$(objpfx)libc_malloc_debug.so\n $(objpfx)tst-free-aligned-sized-mtrace.out: $(objpfx)tst-free-aligned-sized-trace.out\n \t$(common-objpfx)malloc/mtrace $(objpfx)tst-free-aligned-sized-mem.mtrace > $@; \\\n \t$(evaluate-test)\n \n-tst-free-sized-trace-ENV = MALLOC_TRACE=$(objpfx)tst-free-sized-mem.mtrace \\\n+tst-free-sized-trace-ENV += MALLOC_TRACE=$(objpfx)tst-free-sized-mem.mtrace \\\n \tLD_PRELOAD=$(objpfx)libc_malloc_debug.so\n $(objpfx)tst-free-sized-mtrace.out: $(objpfx)tst-free-sized-trace.out\n \t$(common-objpfx)malloc/mtrace $(objpfx)tst-free-sized-mem.mtrace > $@; \\\ndiff --git a/sysdeps/unix/sysv/linux/aarch64/Makefile b/sysdeps/unix/sysv/linux/aarch64/Makefile\nindex 57461fded7..2270027286 100644\n--- a/sysdeps/unix/sysv/linux/aarch64/Makefile\n+++ b/sysdeps/unix/sysv/linux/aarch64/Makefile\n@@ -70,21 +70,18 @@ $(objpfx)tst-bti-ld-debug-dlopen.out: $(objpfx)tst-bti-mod-unprot.so\n $(objpfx)tst-bti-permissive-dlopen.out: $(objpfx)tst-bti-mod-unprot.so\n \n $(objpfx)tst-bti-abort-unprot-preload.out: $(objpfx)tst-bti-mod-unprot-preload.so\n-tst-bti-abort-unprot-preload-ENV = \\\n- GLIBC_TUNABLES=glibc.cpu.aarch64_bti=1 \\\n- LD_PRELOAD=$(objpfx)tst-bti-mod-unprot-preload.so\n+$(eval $(call tunable-add,tst-bti-abort-unprot-preload,glibc.cpu.aarch64_bti=1))\n+tst-bti-abort-unprot-preload-ENV += LD_PRELOAD=$(objpfx)tst-bti-mod-unprot-preload.so\n \n $(objpfx)tst-bti-dep-prot-preload.out: $(objpfx)tst-bti-mod-prot-preload.so\n # The 'fun' function will be provided by the preload library\n LDFLAGS-tst-bti-dep-prot-preload = -Wl,--unresolved-symbols=ignore-all\n-tst-bti-dep-prot-preload-ENV = \\\n- GLIBC_TUNABLES=glibc.cpu.aarch64_bti=0 \\\n- LD_PRELOAD=$(objpfx)tst-bti-mod-prot-preload.so\n+$(eval $(call tunable-add,tst-bti-dep-prot-preload,glibc.cpu.aarch64_bti=0))\n+tst-bti-dep-prot-preload-ENV += LD_PRELOAD=$(objpfx)tst-bti-mod-prot-preload.so\n \n $(objpfx)tst-bti-permissive-preload.out: $(objpfx)tst-bti-mod-unprot-preload.so\n-tst-bti-permissive-preload-ENV = \\\n- GLIBC_TUNABLES=glibc.cpu.aarch64_bti=0 \\\n- LD_PRELOAD=$(objpfx)tst-bti-mod-unprot-preload.so\n+$(eval $(call tunable-add,tst-bti-permissive-preload,glibc.cpu.aarch64_bti=0))\n+tst-bti-permissive-preload-ENV += LD_PRELOAD=$(objpfx)tst-bti-mod-unprot-preload.so\n \n CFLAGS-tst-bti-abort-unprot.o += -mbranch-protection=none\n CFLAGS-tst-bti-ld-debug-exe.o += -mbranch-protection=none\n@@ -93,17 +90,17 @@ CFLAGS-tst-bti-mod-unprot.os += -mbranch-protection=none\n CFLAGS-tst-bti-mod-unprot-preload.os += -mbranch-protection=none\n CFLAGS-tst-bti-mod-unprot-audit.os += -mbranch-protection=none\n \n-tst-bti-abort-imm-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=1\n-tst-bti-abort-transitive-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=1\n-tst-bti-abort-unprot-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=1\n-tst-bti-dep-prot-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=1\n-tst-bti-dlopen-imm-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=1\n-tst-bti-dlopen-prot-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=1\n-tst-bti-dlopen-transitive-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=1\n+$(eval $(call tunable-add,tst-bti-abort-imm,glibc.cpu.aarch64_bti=1))\n+$(eval $(call tunable-add,tst-bti-abort-transitive,glibc.cpu.aarch64_bti=1))\n+$(eval $(call tunable-add,tst-bti-abort-unprot,glibc.cpu.aarch64_bti=1))\n+$(eval $(call tunable-add,tst-bti-dep-prot,glibc.cpu.aarch64_bti=1))\n+$(eval $(call tunable-add,tst-bti-dlopen-imm,glibc.cpu.aarch64_bti=1))\n+$(eval $(call tunable-add,tst-bti-dlopen-prot,glibc.cpu.aarch64_bti=1))\n+$(eval $(call tunable-add,tst-bti-dlopen-transitive,glibc.cpu.aarch64_bti=1))\n \n-tst-bti-permissive-imm-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=0\n-tst-bti-permissive-transitive-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=0\n-tst-bti-permissive-dlopen-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=0\n+$(eval $(call tunable-add,tst-bti-permissive-imm,glibc.cpu.aarch64_bti=0))\n+$(eval $(call tunable-add,tst-bti-permissive-transitive,glibc.cpu.aarch64_bti=0))\n+$(eval $(call tunable-add,tst-bti-permissive-dlopen,glibc.cpu.aarch64_bti=0))\n \n $(objpfx)tst-bti-unprot-audit.out: $(objpfx)tst-bti-mod-unprot-audit.so\n tst-bti-unprot-audit-ARGS = -- $(host-test-program-cmd)\n@@ -112,7 +109,7 @@ $(objpfx)tst-bti-prot-audit.out: $(objpfx)tst-bti-mod-prot-audit.so\n $(objpfx)tst-bti-prot-audit: $(objpfx)tst-bti-mod-prot.so\n tst-bti-prot-audit-ARGS = -- $(host-test-program-cmd)\n \n-tst-bti-permissive-audit-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=0\n+$(eval $(call tunable-add,tst-bti-permissive-audit,glibc.cpu.aarch64_bti=0))\n $(objpfx)tst-bti-permissive-audit.out: $(objpfx)tst-bti-mod-unprot-audit.so\n $(objpfx)tst-bti-permissive-audit: $(objpfx)tst-bti-mod.so\n tst-bti-permissive-audit-ARGS = -- $(host-test-program-cmd)\n@@ -131,7 +128,7 @@ tests-static += \\\n tst-bti-abort-static \\\n # tests-static\n \n-tst-bti-abort-static-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_bti=1\n+$(eval $(call tunable-add,tst-bti-abort-static,glibc.cpu.aarch64_bti=1))\n CFLAGS-tst-bti-abort-static.o += -mbranch-protection=none\n \n $(objpfx)tst-bti-ld-debug-%.out: $(..)elf/tst-dl-debug-protect.sh $(objpfx)tst-bti-ld-debug-%\n@@ -224,37 +221,37 @@ LDFLAGS-tst-gcs-optional-static-on += -Wl,-z,gcs=always\n LDFLAGS-tst-gcs-optional-static-off += -Wl,-z,gcs=never\n LDFLAGS-tst-gcs-override-static += -Wl,-z,gcs=never\n \n-tst-gcs-disabled-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=0\n-tst-gcs-enforced-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1\n-tst-gcs-enforced-abort-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1\n-tst-gcs-optional-on-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2\n-tst-gcs-optional-off-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2\n-tst-gcs-override-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=3\n+$(eval $(call tunable-add,tst-gcs-disabled,glibc.cpu.aarch64_gcs=0))\n+$(eval $(call tunable-add,tst-gcs-enforced,glibc.cpu.aarch64_gcs=1))\n+$(eval $(call tunable-add,tst-gcs-enforced-abort,glibc.cpu.aarch64_gcs=1))\n+$(eval $(call tunable-add,tst-gcs-optional-on,glibc.cpu.aarch64_gcs=2))\n+$(eval $(call tunable-add,tst-gcs-optional-off,glibc.cpu.aarch64_gcs=2))\n+$(eval $(call tunable-add,tst-gcs-override,glibc.cpu.aarch64_gcs=3))\n \n-tst-gcs-disabled-static-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=0\n-tst-gcs-enforced-static-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1\n-tst-gcs-enforced-static-abort-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1\n-tst-gcs-optional-static-on-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2\n-tst-gcs-optional-static-off-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2\n-tst-gcs-override-static-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=3\n+$(eval $(call tunable-add,tst-gcs-disabled-static,glibc.cpu.aarch64_gcs=0))\n+$(eval $(call tunable-add,tst-gcs-enforced-static,glibc.cpu.aarch64_gcs=1))\n+$(eval $(call tunable-add,tst-gcs-enforced-static-abort,glibc.cpu.aarch64_gcs=1))\n+$(eval $(call tunable-add,tst-gcs-optional-static-on,glibc.cpu.aarch64_gcs=2))\n+$(eval $(call tunable-add,tst-gcs-optional-static-off,glibc.cpu.aarch64_gcs=2))\n+$(eval $(call tunable-add,tst-gcs-override-static,glibc.cpu.aarch64_gcs=3))\n \n LDFLAGS-tst-gcs-execv += -Wl,-z,gcs=always\n-tst-gcs-execv-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1\n+$(eval $(call tunable-add,tst-gcs-execv,glibc.cpu.aarch64_gcs=1))\n tst-gcs-execv-ARGS = -- $(host-test-program-cmd)\n LDFLAGS-tst-gcs-fork += -Wl,-z,gcs=always\n-tst-gcs-fork-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2\n+$(eval $(call tunable-add,tst-gcs-fork,glibc.cpu.aarch64_gcs=2))\n \n LDFLAGS-tst-gcs-lock += -Wl,-z,gcs=always\n-tst-gcs-lock-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1\n+$(eval $(call tunable-add,tst-gcs-lock,glibc.cpu.aarch64_gcs=1))\n LDFLAGS-tst-gcs-lock-ptrace += -Wl,-z,gcs=always\n-tst-gcs-lock-ptrace-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1\n+$(eval $(call tunable-add,tst-gcs-lock-ptrace,glibc.cpu.aarch64_gcs=1))\n tst-gcs-lock-ptrace-ARGS = -- $(host-test-program-cmd)\n LDFLAGS-tst-gcs-lock-static += -Wl,-z,gcs=always\n-tst-gcs-lock-static-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1\n+$(eval $(call tunable-add,tst-gcs-lock-static,glibc.cpu.aarch64_gcs=1))\n LDFLAGS-tst-gcs-unlock += -Wl,-z,gcs=always\n-tst-gcs-unlock-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2\n+$(eval $(call tunable-add,tst-gcs-unlock,glibc.cpu.aarch64_gcs=2))\n LDFLAGS-tst-gcs-unlock-static += -Wl,-z,gcs=always\n-tst-gcs-unlock-static-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2\n+$(eval $(call tunable-add,tst-gcs-unlock-static,glibc.cpu.aarch64_gcs=2))\n \n # force one of the dependencies to be unmarked\n LDFLAGS-tst-gcs-mod2.so += -Wl,-z,gcs=never\n@@ -283,10 +280,10 @@ $(objpfx)tst-gcs-mod1.so: $(objpfx)tst-gcs-mod2.so\n $(objpfx)tst-gcs-ld-debug-both: $(objpfx)tst-gcs-mod2.so\n $(objpfx)tst-gcs-ld-debug-shared: $(objpfx)tst-gcs-mod1.so $(objpfx)tst-gcs-mod3.so\n \n-tst-gcs-shared-disabled-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=0\n-tst-gcs-shared-enforced-abort-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1\n-tst-gcs-shared-optional-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2\n-tst-gcs-shared-override-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=3\n+$(eval $(call tunable-add,tst-gcs-shared-disabled,glibc.cpu.aarch64_gcs=0))\n+$(eval $(call tunable-add,tst-gcs-shared-enforced-abort,glibc.cpu.aarch64_gcs=1))\n+$(eval $(call tunable-add,tst-gcs-shared-optional,glibc.cpu.aarch64_gcs=2))\n+$(eval $(call tunable-add,tst-gcs-shared-override,glibc.cpu.aarch64_gcs=3))\n \n LDFLAGS-tst-gcs-dlopen-disabled = -Wl,-z,gcs=always\n LDFLAGS-tst-gcs-dlopen-enforced = -Wl,-z,gcs=always\n@@ -296,11 +293,11 @@ LDFLAGS-tst-gcs-dlopen-override = -Wl,-z,gcs=always\n LDFLAGS-tst-gcs-ld-debug-exe = -Wl,-z,gcs=never\n LDFLAGS-tst-gcs-ld-debug-both = -Wl,-z,gcs=never\n \n-tst-gcs-dlopen-disabled-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=0\n-tst-gcs-dlopen-enforced-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1\n-tst-gcs-dlopen-optional-on-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2\n-tst-gcs-dlopen-optional-off-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2\n-tst-gcs-dlopen-override-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=3\n+$(eval $(call tunable-add,tst-gcs-dlopen-disabled,glibc.cpu.aarch64_gcs=0))\n+$(eval $(call tunable-add,tst-gcs-dlopen-enforced,glibc.cpu.aarch64_gcs=1))\n+$(eval $(call tunable-add,tst-gcs-dlopen-optional-on,glibc.cpu.aarch64_gcs=2))\n+$(eval $(call tunable-add,tst-gcs-dlopen-optional-off,glibc.cpu.aarch64_gcs=2))\n+$(eval $(call tunable-add,tst-gcs-dlopen-override,glibc.cpu.aarch64_gcs=3))\n \n $(objpfx)tst-gcs-dlopen-disabled.out: $(objpfx)tst-gcs-mod2.so\n $(objpfx)tst-gcs-dlopen-enforced.out: $(objpfx)tst-gcs-mod2.so\n@@ -311,7 +308,7 @@ $(objpfx)tst-gcs-ld-debug-dlopen.out: $(objpfx)tst-gcs-mod2.so\n \n LDFLAGS-tst-gcs-noreturn = -Wl,-z,gcs=always\n \n-tst-gcs-noreturn-ENV = GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=0\n+$(eval $(call tunable-add,tst-gcs-noreturn,glibc.cpu.aarch64_gcs=0))\n \n $(objpfx)tst-gcs-ld-debug-%.out: $(..)elf/tst-dl-debug-protect.sh $(objpfx)tst-gcs-ld-debug-%\n \t$(SHELL) $< $(objpfx) '$(test-wrapper-env)' '$(rtld-prefix)' \\\n@@ -329,18 +326,14 @@ $(objpfx)tst-gcs-preload-enforced-abort: $(objpfx)tst-gcs-mod1.so\n $(objpfx)tst-gcs-preload-optional: $(objpfx)tst-gcs-mod1.so\n $(objpfx)tst-gcs-preload-override: $(objpfx)tst-gcs-mod1.so\n \n-tst-gcs-preload-disabled-ENV = \\\n- GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=0 \\\n- LD_PRELOAD=$(objpfx)tst-gcs-mod1.so\n-tst-gcs-preload-enforced-abort-ENV = \\\n- GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1 \\\n- LD_PRELOAD=$(objpfx)tst-gcs-mod1.so\n-tst-gcs-preload-optional-ENV = \\\n- GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=2 \\\n- LD_PRELOAD=$(objpfx)tst-gcs-mod1.so\n-tst-gcs-preload-override-ENV = \\\n- GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=3 \\\n- LD_PRELOAD=$(objpfx)tst-gcs-mod1.so\n+$(eval $(call tunable-add,tst-gcs-preload-disabled,glibc.cpu.aarch64_gcs=0))\n+tst-gcs-preload-disabled-ENV += LD_PRELOAD=$(objpfx)tst-gcs-mod1.so\n+$(eval $(call tunable-add,tst-gcs-preload-enforced-abort,glibc.cpu.aarch64_gcs=1))\n+tst-gcs-preload-enforced-abort-ENV += LD_PRELOAD=$(objpfx)tst-gcs-mod1.so\n+$(eval $(call tunable-add,tst-gcs-preload-optional,glibc.cpu.aarch64_gcs=2))\n+tst-gcs-preload-optional-ENV += LD_PRELOAD=$(objpfx)tst-gcs-mod1.so\n+$(eval $(call tunable-add,tst-gcs-preload-override,glibc.cpu.aarch64_gcs=3))\n+tst-gcs-preload-override-ENV += LD_PRELOAD=$(objpfx)tst-gcs-mod1.so\n \n LDFLAGS-tst-gcs-audit1.so += -Wl,-z,gcs=never\n \n", "prefixes": [] }