Created attachment 759016 [details] strace sln I'm trying to build sys-libs/glibc-2.33-r1::gentoo on my Banana Pi and it's failing on the install phase with the following: /var/tmp/portage/sys-libs/glibc-2.33-r1/work/build-arm-armv7a-unknown-linux-gnueabihf-nptl/elf/sln /var/tmp/portage/sys-libs/glibc-2.33-r1/work/build-arm-armv7a-unknown-linux-gnueabihf-nptl/elf/symlink.list /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/ld-linux-armhf.so.3: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libc.so.6: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libBrokenLocale.so.1: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libm.so.6: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libdl.so.2: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libpthread.so.0: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libc.so.6: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/librt.so.1: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libcrypt.so.1: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libthread_db.so.1: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libresolv.so.2: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libnss_dns.so.2: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libanl.so.1: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libnss_files.so.2: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libnss_db.so.2: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libnss_compat.so.2: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libnss_hesiod.so.2: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libnsl.so.1: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libutil.so.1: invalid destination: Invalid argument /var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/ld-linux-armhf.so.3: invalid destination: Invalid argument make[1]: *** [Makefile:115: install-symbolic-link] Error 255 make[1]: Leaving directory '/var/tmp/portage/sys-libs/glibc-2.33-r1/work/glibc-2.33' make: *** [Makefile:12: install] Error 2 * ERROR: sys-libs/glibc-2.33-r1::gentoo failed (install phase): * emake failed I've tried both glibc-2.33-r1 and glibc-2.33-r7, which are currently stable on arm, and get the same error. # emerge -pqv '=sys-libs/glibc-2.33-r1::gentoo' [ebuild R ] sys-libs/glibc-2.33-r1 USE="(crypt) multiarch nscd ssp (static-libs) -audit -caps (-cet) -compile-locales -custom-cflags -doc -gd -headers-only (-multilib) -multilib-bootstrap -profile (-selinux) (-static-pie) -suid -systemtap -test (-vanilla)" Partial emerge --info: Portage 3.0.28 (python 3.9.9-final-0, default/linux/arm/17.0/armv7a, gcc-11.2.0, glibc-2.33-r1, 3.4.104-sunxi-g1df3de8e armv7l) ================================================================= System Settings ================================================================= System uname: Linux-3.4.104-sunxi-g1df3de8e-armv7l-with-glibc2.33 KiB Mem: 992956 total, 28680 free KiB Swap: 4194296 total, 3904528 free Timestamp of repository gentoo: Sat, 11 Dec 2021 01:45:01 +0000 Head commit of repository gentoo: 3f6c0b9b945215fbf8c349e823c45edd38d4dcd0 sh bash 5.1_p8 ld GNU ld (Gentoo 2.37_p1 p0) 2.37 distcc 3.4 armv7a-unknown-linux-gnueabihf [disabled] app-shells/bash: 5.1_p8::gentoo dev-lang/perl: 5.34.0-r3::gentoo dev-lang/python: 3.8.12_p1::gentoo, 3.9.9::gentoo, 3.10.0_p1::gentoo dev-lang/rust-bin: 1.53.0::gentoo dev-util/cmake: 3.20.5::gentoo sys-apps/baselayout: 2.7-r3::gentoo sys-apps/openrc: 0.44.9::gentoo sys-apps/sandbox: 2.25::gentoo sys-devel/autoconf: 2.69-r5::gentoo, 2.71-r1::gentoo sys-devel/automake: 1.16.4::gentoo sys-devel/binutils: 2.37_p1::gentoo sys-devel/gcc: 11.2.0::gentoo sys-devel/gcc-config: 2.4::gentoo sys-devel/libtool: 2.4.6-r6::gentoo sys-devel/make: 4.3::gentoo sys-kernel/linux-headers: 5.10-r1::gentoo (virtual/os-headers) sys-libs/glibc: 2.33-r1::gentoo sln seems to be working: portage@banana:/tmp$ cat links.txt a.txt /tmp/link-a.txt b.txt /tmp//link-b.txt portage@banana:/tmp$ /var/tmp/portage/sys-libs/glibc-2.33-r1/work/build-arm-armv7a-unknown-linux-gnueabihf-nptl/elf/sln links.txt portage@banana:/tmp$ ls -l link-* lrwxrwxrwx 1 portage portage 5 Dec 14 21:41 link-a.txt -> a.txt lrwxrwxrwx 1 portage portage 5 Dec 14 21:41 link-b.txt -> b.txt However, after running the exact command that is failing as portage under strace (complete output attached), I see the problem: portage@banana:~/sys-libs/glibc-2.33-r1/image/lib$ strace -- /var/tmp/portage/sys-libs/glibc-2.33-r1/work/build-arm-armv7a-unknown-linux-gnueabihf-nptl/elf/sln /var/tmp/portage/sys-libs/glibc-2.33-r1/work/build-arm-armv7a-unknown-linux-gnueabihf-nptl/elf/symlink.list (...) statx(AT_FDCWD, "/var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libc.so.6", AT_STATX_SYNC_AS_STAT|AT_SYMLINK_NOFOLLOW|AT_NO_AUTOMOUNT, STATX_BASIC_STATS, 0xbef74dc0) = -1 ENOSYS (Function not implemented) fstatat64(AT_FDCWD, "/var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libc.so.6", 0xbef74d58, 0x1 /* AT_??? */) = -1 EINVAL (Invalid argument) write(2, "/var/tmp/portage/sys-libs/glibc-"..., 100/var/tmp/portage/sys-libs/glibc-2.33-r1/image//lib/libc.so.6: invalid destination: Invalid argument ) = 100 (...) Output of file: /var/tmp/portage/sys-libs/glibc-2.33-r1/work/build-arm-armv7a-unknown-linux-gnueabihf-nptl/elf/sln: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), statically linked, for GNU/Linux 3.2.0, with debug_info, not stripped Please let me know if any additional info is needed. The build log is quite big since it only fails in the install phase, but I can attach it if needed.
Concerned about the very old kernel and suspect it might be related. Could you compress the build log and attach it?
Created attachment 759018 [details] bzip2 -k /dev/shm/sys-libs/var/tmp/portage/sys-libs/glibc-2.33-r1/temp/build.log Hi Sam! Thanks for your reply. Here's the compressed build log.
I should probably mention that I have /var/tmp/portage mounted as tmpfs: tmpfs /var/tmp/portage tmpfs size=2500M,nr_inodes=1M,uid=portage,gid=portage,noatime,exec 0 0 Trying to build without tmpfs right now.
(In reply to Sam James from comment #1) > Concerned about the very old kernel and suspect it might be related. Yup. statx() was added to Linux in kernel 4.11; library support was added in glibc 2.28.
Can you also provide the boot dmesg file from your Banana Pi? You should be able to "match" the full name to a device tree file in 5.14-ish mainline.
Created attachment 759140 [details] dmesg Thanks for the replies, everyone. Compiling without tmpfs failed as well. It's a Banana Pi M1 (Allwinner A20). Unfortunately the kernel I'm using[1] does not support DTS/DTB, but I've attached a partial dmesg output anyway. I did a few tests using gentoo-sources 5.4 and arch/arm/boot/dts/sun7i-a20-bananapi.dts about a year ago. It was working fine, except for some issues with onewire (which I need) and voltage readings under sysfs (if I recall correctly), so I reverted back to this 3.4. I didn't have the time to try again since :( Maybe I'll just try compiling glibc with a patched sln for now. [1] https://github.com/linux-sunxi/linux-sunxi
Created attachment 759994 [details, diff] bug-829212-old-kernel-system-sln.patch I was able to build/install glibc-2.33-r7 using this custom patch I wrote. It changes the Makerules file to use the /sbin/sln binary available in my system (from the previous install of glibc). It's just a quick workaround. Looking back, I'm not sure I should have done this since the /sbin/sln I have installed now has the same problem ๐ . Anyway. Hopefully I'll be able to try out a new kernel in the next month or so. Do you think this issue should be reported upstream? Perhaps the minimum required kernel version should be raised (though that's not ideal) or an alternative function called if statx is not implemented.
(In reply to Nuno from comment #7) > Created attachment 759994 [details, diff] [details, diff] > bug-829212-old-kernel-system-sln.patch > > I was able to build/install glibc-2.33-r7 using this custom patch I wrote. > It changes the Makerules file to use the /sbin/sln binary available in my > system (from the previous install of glibc). It's just a quick workaround. > Looking back, I'm not sure I should have done this since the /sbin/sln I > have installed now has the same problem ๐ . > > Anyway. Hopefully I'll be able to try out a new kernel in the next month or > so. > > Do you think this issue should be reported upstream? > Perhaps the minimum required kernel version should be raised (though that's > not ideal) or an alternative function called if statx is not implemented. I think it probably should be, although I've got to be honest, I've not had time to really look at this properly :( If you do report it upstream, could you pop the link here too (and link this bug in the upstream report)? I think it seems like a valid bug: it should fall back, and at the very least, if glibc isn't interested in supporting older versions, they need to crank up the minimum requirements.
Sorry I didn't really get a chance to report this upstream. Meanwhile, it seems this has been fixed in 2.34-r13, since I was able to install it: Thu May 26 08:14:31 2022 <<< sys-libs/glibc-2.33-r7 Thu May 26 08:17:08 2022 >>> sys-libs/glibc-2.34-r13 (still using linux 3.4.104)