On Fri, Apr 21, 2023 at 12:24 PM Samuel Thibault <samuel.thiba...@gnu.org> wrote: > No, they don't :) otherwise they wouldn't respect the ABI. The AMD64 > ABI indeed defaults to /lib/ld64.so.1, and says that Linux uses > /lib64/ld-linux-x86-64.so.2, and that is cast in stone, we cannot change > it any more. > > /lib/ld-x86-64.so.1 should be completely fine.
I don't think I understand -- so the AMD64 ABI spec requires it to be /lib/ld64.so.1, but it also mentions that Linux uses /lib64/ld-linux-x86-64.so.2, and that means we should be using /lib/ld-x86-64.so.1? How does that make any sense? Moreover, how does the ELF spec requiring a specific file path for INTERP make any sense at all? Surely the .1 is the soname means something, we should be able to bump it to .2 when we break ABI really bad? What if the system is not a Unix and doesn't use /lib/ or .so for its libraries (but still uses ELF as a format)? Why embed a path name into each binary at all, if the spec just defines the one true rtld path? And also surely the systems don't follow that part of the spec in practice? Linux uses its own thing as we have already established, and from other emulparams files in the binutils tree, I see that Haiku has /system/runtime_loader, and FreeBSD apparently /usr/libexec/ld-elf.so.1. In SerenityOS we use /usr/lib/Loader.so. I'm not objecting to /lib/ld-x86-64.so.1, I just don't understand... Sergey