Re: git: 9cabef3d146e - main - ldd: use direct exec mode unconditionally
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 22 Oct 2022 06:09:53 UTC
Konstantin Belousov <kostikbel_at_gmail.com> wrote on Date: Sat, 22 Oct 2022 01:13:49 UTC : > . . . > Please try something along this lines: > > 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 > > #if __ELF_WORD_SIZE == 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 => /lib/libgcc_s.so.1 (0x2056e000) libc.so.7 => /lib/libc.so.7 (0x205a8000) # ldd -a /bin/date /bin/date: libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2056e000) libc.so.7 => /lib/libc.so.7 (0x205a8000) /lib/libgcc_s.so.1: libc.so.7 => /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.armv7/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 => /lib/libgcc_s.so.1 (0x2056e000) libc.so.7 => /lib/libc.so.7 (0x205a8000) # ldd -a /bin/date /bin/date: libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2056e000) libc.so.7 => /lib/libc.so.7 (0x205a8000) /lib/libgcc_s.so.1: libc.so.7 => /lib/libc.so.7 (0x205a8000) In case it matters, these Cortex-A7's have LPAE (RPi2B v1.1 shown): CPU Features: 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 #if __ELF_WORD_SIZE == 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 => /lib/libgcc_s.so.1 (0x4106f000) libc.so.7 => /lib/libc.so.7 (0x410a9000) # ldd -a /bin/date /bin/date: libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x4106f000) libc.so.7 => /lib/libc.so.7 (0x410a9000) /lib/libgcc_s.so.1: libc.so.7 => /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.) === Mark Millard marklmi at yahoo.com