On Tuesday, 19 July 2022 at 23:19:28 UTC, jfondren wrote:

Thanks for your thorough presentation.

[...]
Another option is to get newer glibc onto this system (not installing it, just making it available for dmd. use LD_LIBRARY_PATH).

On older systems the dynamic loader (ld.so) may not execute the binary under the new glibc with the error message "ELF file OS ABI invalid". This is due to the addition of two features to the toolchain (`STB_GNU_UNIQUE`, `STT_GNU_IFUNC`) eleven years ago [0] an application programmer usually does not have to deal with.

In this case one needs to start dmd using the loader which accompanies the new glibc. In order to avoid that I use patchelf to set `INTERP` and `RUNPATH` on all binaries in linux/bin64 accordingly.

[...]
Speaking of toolchains, it might be possible to use a modern server with a modern dmd with an ancient glibc: https://www.lordaro.co.uk/posts/2018-08-26-compiling-glibc.html

Since glibc is not forward compatible [1] I wonder why the dmd tools are not routinely linked against a long established glibc version.

[0] <https://sourceware.org/legacy-ml/binutils/2011-04/msg00107.html> [1] <https://stackoverflow.com/questions/11107263/how-compatible-are-different-versions-of-glibc>

Reply via email to