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 <[email protected]> > --- > 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 <sys/types.h> > #include <sys/mman.h> > #include <errno.h> > +#include <ldsodefs.h> > #include <hurd.h> > #include <hurd/fd.h> > > @@ -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.
