Date: Fri, 21 Oct 2022 23:09:53 -0700 From: Mark Millard <marklmi@yahoo.com> To: Konstantin Belousov <kostikbel@gmail.com>, dev-commits-src-main@freebsd.org Subject: Re: git: 9cabef3d146e - main - ldd: use direct exec mode unconditionally Message-ID: <0D5A9F6F-C19B-487D-BD61-F40F02E38873@yahoo.com> References: <0D5A9F6F-C19B-487D-BD61-F40F02E38873.ref@yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Konstantin Belousov <kostikbel_at_gmail.com> wrote on Date: Sat, 22 Oct 2022 01:13:49 UTC : > . . . > Please try something along this lines: >=20 > diff --git a/sys/arm64/include/elf.h b/sys/arm64/include/elf.h > index 3f7c3964d428..22e968c632bf 100644 > --- a/sys/arm64/include/elf.h > +++ b/sys/arm64/include/elf.h > @@ -86,7 +86,7 @@ __ElfType(Auxinfo); > #endif > =20 > #if __ELF_WORD_SIZE =3D=3D 32 > -#define ET_DYN_LOAD_ADDR 0x12000 > +#define ET_DYN_LOAD_ADDR 0x01001000 > #else > #define ET_DYN_LOAD_ADDR 0x100000 > #endif [Summary: that made it work.] First I did some as-is testing . . . Testing for the problem is easy on the Cortex-A72 system . . . # ~/do-chroot-main-CA7.sh # ldd /bin/date /bin/date: ld-elf.so.1: /bin/date: mmap of entire address space failed: Cannot = allocate memory /bin/date: exit status 1 # ldd -a /bin/date ld-elf.so.1: /bin/date: mmap of entire address space failed: Cannot = allocate memory /bin/date: exit status 1 By contrast, on a 2 GiByte RAM Cortex-A7 (armv7) Orange Pi Plus 2 Ed, the result is different: # ldd /bin/date /bin/date: libgcc_s.so.1 =3D> /lib/libgcc_s.so.1 (0x2056e000) libc.so.7 =3D> /lib/libc.so.7 (0x205a8000) # ldd -a /bin/date /bin/date: libgcc_s.so.1 =3D> /lib/libgcc_s.so.1 (0x2056e000) libc.so.7 =3D> /lib/libc.so.7 (0x205a8000) /lib/libgcc_s.so.1: libc.so.7 =3D> /lib/libc.so.7 (0x205a8000) For reference (long output line split for readability): # uname -apKU FreeBSD OPiP2E_RPI2v1p1 14.0-CURRENT FreeBSD 14.0-CURRENT #49 main-n258610-ba7319e9091b-dirty: Fri Oct 14 18:27:46 PDT 2022 = root@CA72_16Gp_ZFS:/usr/obj/BUILDs/main-CA7-nodbg-clang/usr/main-src/arm.a= rmv7/sys/GENERIC-NODBG-CA7 arm armv7 1400072 1400072 (It was installed from the same buildworld buildkernel as tree used to set up the chroot tree on the Cortex-A72 system.) Same boot media, but booting a 1 GiByte RAM Cortex-A7 (armv7) RPi2B v1.1: # ldd /bin/date /bin/date: libgcc_s.so.1 =3D> /lib/libgcc_s.so.1 (0x2056e000) libc.so.7 =3D> /lib/libc.so.7 (0x205a8000) # ldd -a /bin/date /bin/date: libgcc_s.so.1 =3D> /lib/libgcc_s.so.1 (0x2056e000) libc.so.7 =3D> /lib/libc.so.7 (0x205a8000) /lib/libgcc_s.so.1: libc.so.7 =3D> /lib/libc.so.7 (0x205a8000) In case it matters, these Cortex-A7's have LPAE (RPi2B v1.1 shown): CPU Features:=20 Multiprocessing, Thumb2, Security, Virtualization, Generic Timer, = VMSAv7, PXN, LPAE, Coherent Walk So only the aarch64 context that allows armv7 shows the problem. Then I did the requested aarch64 test with the patch . . . So, for that aarch64 context, the patch test requested: # git -C /usr/main-src/ diff /usr/main-src/sys/arm64/include/ diff --git a/sys/arm64/include/elf.h b/sys/arm64/include/elf.h index 3f7c3964d428..22e968c632bf 100644 --- a/sys/arm64/include/elf.h +++ b/sys/arm64/include/elf.h @@ -86,7 +86,7 @@ __ElfType(Auxinfo); #endif =20 #if __ELF_WORD_SIZE =3D=3D 32 -#define ET_DYN_LOAD_ADDR 0x12000 +#define ET_DYN_LOAD_ADDR 0x01001000 #else #define ET_DYN_LOAD_ADDR 0x100000 #endif Then: builworld buildkernel installkernel installworld reboot login. The results in that new context were: # ~/do-chroot-main-CA7.sh # ldd /bin/date /bin/date: libgcc_s.so.1 =3D> /lib/libgcc_s.so.1 (0x4106f000) libc.so.7 =3D> /lib/libc.so.7 (0x410a9000) # ldd -a /bin/date /bin/date: libgcc_s.so.1 =3D> /lib/libgcc_s.so.1 (0x4106f000) libc.so.7 =3D> /lib/libc.so.7 (0x410a9000) /lib/libgcc_s.so.1: libc.so.7 =3D> /lib/libc.so.7 (0x410a9000) So: works. NOTES: I do not have any armv6, i386, or 32-bit powerpc contexts set up to test, not that the specific patch targets the i386 or targets any powerpc's. (armv6 requires adjusting the kernel to instead not target armv7 chroot/jail support. Long ago I helped someone work out having an alternate kernel to boot for such armv6 chroot/jail use, not that I remember any detail at this point. The detail should be in my E-mail archive and/or in comments for a bugzilla submittal that the person had used to report the lack of armv6 chroot/jail support.) =3D=3D=3D Mark Millard marklmi at yahoo.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0D5A9F6F-C19B-487D-BD61-F40F02E38873>