From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id B96A13857732 for ; Mon, 24 Apr 2023 20:48:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B96A13857732 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gnu.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gnu.org Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pr37A-0003DO-Tj; Mon, 24 Apr 2023 16:48:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=In-Reply-To:MIME-Version:References:Subject:To:From: Date; bh=dVOdq60JhT7xdnO0eYMJiTccOqiC+mXdK946YXF41Zs=; b=bxW3jcfZOXteVkDFMnbc 1EpkIrspYc/aWOm/C+Fqvtn+hCt5RMGmOQdtV9uhGGTIKF10KPZtX4tna5/gPkhQILgg+o5u+XMra JgxeerAcAUPRf/qsw6AeFmxIB0c1rtRnB0auku7U4FnbBf9YEBkr1DVTuGVuzVsAUnVJBYQkE4VDv E9jxt2+7RLBQX7qi9Hal6QyXviga5mt+YloHiunetpaaHcwcQq9yhFtMDua7ndAbCW5oEhWlyGtaK SoFQqzHbobtLVlvTr0J3s/sUgIqXfrO8L2eRbMQeG/a0u7MsaNTYYl1fK/eu1OoUFy3aHoSmDXMpq KJR8j8aXN7VTIw==; Received: from [2a01:cb19:4a:a400:de41:a9ff:fe47:ec49] (helo=begin.home) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pr379-0003jH-WB; Mon, 24 Apr 2023 16:48:48 -0400 Received: from samy by begin.home with local (Exim 4.96) (envelope-from ) id 1pr378-003u0J-0n; Mon, 24 Apr 2023 22:48:46 +0200 Date: Mon, 24 Apr 2023 22:48:46 +0200 From: Samuel Thibault To: Sergey Bugaev Cc: libc-alpha@sourceware.org, bug-hurd@gnu.org, "H . J . Lu" Subject: Re: [RFC PATCH 4/4] hurd: Implement prefer_map_32bit_exec tunable Message-ID: <20230424204846.dtgapfcqi4747nlc@begin> Mail-Followup-To: Sergey Bugaev , libc-alpha@sourceware.org, bug-hurd@gnu.org, "H . J . Lu" References: <20230423215526.346009-1-bugaevc@gmail.com> <20230423215526.346009-4-bugaevc@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20230423215526.346009-4-bugaevc@gmail.com> Organization: I am not organized User-Agent: NeoMutt/20170609 (1.8.3) X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_PASS,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: Applied, thanks! Sergey Bugaev, le lun. 24 avril 2023 00:55:26 +0300, a ecrit: > 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 > -- Samuel --- Pour une évaluation indépendante, transparente et rigoureuse ! Je soutiens la Commission d'Évaluation de l'Inria.