From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com [IPv6:2a00:1450:4864:20::134]) by sourceware.org (Postfix) with ESMTPS id 291333858C5E for ; Sun, 23 Apr 2023 21:55:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 291333858C5E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-4efe8b3f3f7so1430849e87.2 for ; Sun, 23 Apr 2023 14:55:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682286931; x=1684878931; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BlTnaLZGSmx9pN/0u3YRfEIzFq2rPbcTmlnlwZV4rzg=; b=Oo9srPdVALGzw3a+7IAqqN19zFvqSr2gX+X+tZ5RZrZyE8yiTUlOYKP6vTT2V6TSiK Cd9kHwfPAGMKhCqfJBLw5tkpJV2YVqj6uQkoMm2GjTkS+YEE5TVJtkB2XTIRrSL3LLlK iLXRa5OJNnnmLmPQ/n1GkKLeTUyo+fpuECwEhVlIY96vln2PrYcKHn6vpz11rEogFLR/ kRmKtFmU2K1pD5xHXJ6/sXBQKt95fH7MDAob3snlZccC0hcK2Uv4Z1VwsrEQ6XtTyMHG 7KbSXi9KYfZFXu9RVKquLZAMf2AVxIcyT4PBoljRPv26tKWGUX/O32O5D3g9smJ6XHmD ypjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682286931; x=1684878931; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BlTnaLZGSmx9pN/0u3YRfEIzFq2rPbcTmlnlwZV4rzg=; b=c0Pu8rAxagekcm/cJ4WBNq14eyB3RseOesL028nOyqUU7rs3wY/sxp739wHpccdrnM t4OTfYyQiSHoyrAichOqpiYMG5N9IBrGJSCczY2T1GGwzbky8JpBS19O+dFmvcMk4Mxy k/gr3ZhRoakZdormmQKLU/d8KJj0cwFIlHdPdAfhto27OOrHwJj2BhMgfL7I3+sa10mi dhcFQAf7D/3ubLnWKioD+Bi1gVT0LqOaai3+fdXR3LvGk5ia2965BBjLT7sqhbWGh2Cx TTm0C6h8Nq8nonZiTTwJ/W+udcETHCfPJY7SiRbuAz9qbK+jOs5555/x1W7saRADQTTV 19aA== X-Gm-Message-State: AAQBX9d/uBVAp7MKp5QJQUZ6DhXg04TmmUy29IdoemUM/lFk8Y3A297L k7N6tIv/uObzRFYnlmy4Libn5/TA5MZgcQ== X-Google-Smtp-Source: AKy350aTIo/CCRFxZH9V2Wes1j3HdSbiXdwVlZOTJY1sV0FbPjXI4H19JEJI8fG/5aGOAlP5lDiHrw== X-Received: by 2002:a05:6512:15e:b0:4ec:62ad:918c with SMTP id m30-20020a056512015e00b004ec62ad918cmr2757480lfo.30.1682286931223; Sun, 23 Apr 2023 14:55:31 -0700 (PDT) Received: from surface-pro-6.. ([2a00:1370:818c:4a57:e26d:6595:78ee:6d64]) by smtp.gmail.com with ESMTPSA id q8-20020ac25a08000000b004ecb06acbb3sm1393905lfn.281.2023.04.23.14.55.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Apr 2023 14:55:30 -0700 (PDT) From: Sergey Bugaev To: libc-alpha@sourceware.org Cc: bug-hurd@gnu.org, Samuel Thibault , "H . J . Lu" Subject: [RFC PATCH 4/4] hurd: Implement prefer_map_32bit_exec tunable Date: Mon, 24 Apr 2023 00:55:26 +0300 Message-Id: <20230423215526.346009-4-bugaevc@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230423215526.346009-1-bugaevc@gmail.com> References: <20230423215526.346009-1-bugaevc@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.3 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,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This makes the prefer_map_32bit_exec tunable no longer Linux-specific. Signed-off-by: Sergey Bugaev --- sysdeps/mach/hurd/dl-sysdep.c | 5 ++++ sysdeps/mach/hurd/mmap.c | 6 +++++ sysdeps/unix/sysv/linux/x86_64/64/Makefile | 23 ------------------- sysdeps/x86_64/64/Makefile | 22 ++++++++++++++++++ .../linux => }/x86_64/64/dl-tunables.list | 0 .../linux => }/x86_64/64/tst-map-32bit-1a.c | 0 .../linux => }/x86_64/64/tst-map-32bit-1b.c | 0 .../linux => }/x86_64/64/tst-map-32bit-mod.c | 0 8 files changed, 33 insertions(+), 23 deletions(-) create mode 100644 sysdeps/x86_64/64/Makefile rename sysdeps/{unix/sysv/linux => }/x86_64/64/dl-tunables.list (100%) rename sysdeps/{unix/sysv/linux => }/x86_64/64/tst-map-32bit-1a.c (100%) rename sysdeps/{unix/sysv/linux => }/x86_64/64/tst-map-32bit-1b.c (100%) rename sysdeps/{unix/sysv/linux => }/x86_64/64/tst-map-32bit-mod.c (100%) diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c index 25a12774..79ebb0ce 100644 --- a/sysdeps/mach/hurd/dl-sysdep.c +++ b/sysdeps/mach/hurd/dl-sysdep.c @@ -462,6 +462,11 @@ __mmap (void *addr, size_t len, int prot, int flags, int fd, off_t offset) if (prot & PROT_EXEC) vmprot |= VM_PROT_EXECUTE; +#ifdef __LP64__ + if ((addr == NULL) && (prot & PROT_EXEC) + && HAS_ARCH_FEATURE (Prefer_MAP_32BIT_EXEC)) + flags |= MAP_32BIT; +#endif mask = (flags & MAP_32BIT) ? ~(vm_address_t) 0x7FFFFFFF : 0; if (flags & MAP_ANON) diff --git a/sysdeps/mach/hurd/mmap.c b/sysdeps/mach/hurd/mmap.c index d570be24..c4ffbba3 100644 --- a/sysdeps/mach/hurd/mmap.c +++ b/sysdeps/mach/hurd/mmap.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -56,6 +57,11 @@ __mmap (void *addr, size_t len, int prot, int flags, int fd, off_t offset) copy = ! (flags & MAP_SHARED); +#ifdef __LP64__ + if ((addr == NULL) && (prot & PROT_EXEC) + && HAS_ARCH_FEATURE (Prefer_MAP_32BIT_EXEC)) + flags |= MAP_32BIT; +#endif mask = (flags & MAP_32BIT) ? ~(vm_address_t) 0x7FFFFFFF : 0; switch (flags & MAP_TYPE) diff --git a/sysdeps/unix/sysv/linux/x86_64/64/Makefile b/sysdeps/unix/sysv/linux/x86_64/64/Makefile index 1bf7d528..a7b6dc5a 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/Makefile +++ b/sysdeps/unix/sysv/linux/x86_64/64/Makefile @@ -1,25 +1,2 @@ # The default ABI is 64. default-abi := 64 - -ifeq ($(subdir),elf) - -tests-map-32bit = \ - tst-map-32bit-1a \ - tst-map-32bit-1b \ -# tests-map-32bit -tst-map-32bit-1a-no-pie = yes -tst-map-32bit-1b-no-pie = yes -tests += $(tests-map-32bit) - -modules-map-32bit = \ - tst-map-32bit-mod \ -# modules-map-32bit -modules-names += $(modules-map-32bit) - -$(objpfx)tst-map-32bit-mod.so: $(libsupport) -tst-map-32bit-1a-ENV = LD_PREFER_MAP_32BIT_EXEC=1 -$(objpfx)tst-map-32bit-1a: $(objpfx)tst-map-32bit-mod.so -tst-map-32bit-1b-ENV = GLIBC_TUNABLES=glibc.cpu.prefer_map_32bit_exec=1 -$(objpfx)tst-map-32bit-1b: $(objpfx)tst-map-32bit-mod.so - -endif diff --git a/sysdeps/x86_64/64/Makefile b/sysdeps/x86_64/64/Makefile new file mode 100644 index 00000000..73fcfe0b --- /dev/null +++ b/sysdeps/x86_64/64/Makefile @@ -0,0 +1,22 @@ +ifeq ($(subdir),elf) + +tests-map-32bit = \ + tst-map-32bit-1a \ + tst-map-32bit-1b \ +# tests-map-32bit +tst-map-32bit-1a-no-pie = yes +tst-map-32bit-1b-no-pie = yes +tests += $(tests-map-32bit) + +modules-map-32bit = \ + tst-map-32bit-mod \ +# modules-map-32bit +modules-names += $(modules-map-32bit) + +$(objpfx)tst-map-32bit-mod.so: $(libsupport) +tst-map-32bit-1a-ENV = LD_PREFER_MAP_32BIT_EXEC=1 +$(objpfx)tst-map-32bit-1a: $(objpfx)tst-map-32bit-mod.so +tst-map-32bit-1b-ENV = GLIBC_TUNABLES=glibc.cpu.prefer_map_32bit_exec=1 +$(objpfx)tst-map-32bit-1b: $(objpfx)tst-map-32bit-mod.so + +endif diff --git a/sysdeps/unix/sysv/linux/x86_64/64/dl-tunables.list b/sysdeps/x86_64/64/dl-tunables.list similarity index 100% rename from sysdeps/unix/sysv/linux/x86_64/64/dl-tunables.list rename to sysdeps/x86_64/64/dl-tunables.list diff --git a/sysdeps/unix/sysv/linux/x86_64/64/tst-map-32bit-1a.c b/sysdeps/x86_64/64/tst-map-32bit-1a.c similarity index 100% rename from sysdeps/unix/sysv/linux/x86_64/64/tst-map-32bit-1a.c rename to sysdeps/x86_64/64/tst-map-32bit-1a.c diff --git a/sysdeps/unix/sysv/linux/x86_64/64/tst-map-32bit-1b.c b/sysdeps/x86_64/64/tst-map-32bit-1b.c similarity index 100% rename from sysdeps/unix/sysv/linux/x86_64/64/tst-map-32bit-1b.c rename to sysdeps/x86_64/64/tst-map-32bit-1b.c diff --git a/sysdeps/unix/sysv/linux/x86_64/64/tst-map-32bit-mod.c b/sysdeps/x86_64/64/tst-map-32bit-mod.c similarity index 100% rename from sysdeps/unix/sysv/linux/x86_64/64/tst-map-32bit-mod.c rename to sysdeps/x86_64/64/tst-map-32bit-mod.c -- 2.40.0