FS#75570 - [glibc] Update to 2.36 breaks a lot of EAC games
Attached to Project:
Arch Linux
Opened by Arkadiusz Hiler (ivyl) - Tuesday, 09 August 2022, 20:09 GMT
Last edited by freswa (frederik) - Sunday, 14 August 2022, 16:19 GMT
Opened by Arkadiusz Hiler (ivyl) - Tuesday, 09 August 2022, 20:09 GMT
Last edited by freswa (frederik) - Sunday, 14 August 2022, 16:19 GMT
|
Details
Description:
glibc upstream dropped some compilation flags there were using to force linking with `--hash-style=both`. This breaks compatibility with a lot of games using EAC / EOS that are available on Steam. The GNU Linker defaults to "both" but Arch's GCC is compiled with `./configure --with-linker-hash-style=gnu` which override it. I did some spelunking and it seems like an artifact from the times where `--hash-style=sysv` was still default but Arch wanted to have the benefits of the GNU hash style. The glibc developers are unlikely to fix this breakage but hopefully Epic will fix it. It would be nice to have a band-aid for that in Arch in the meantime so we are not worse off that slower distributions. `-Wl,--hash-style=both` added to CFLAGS or a revert of the patch mentioned in the upstream report should do for the time being. You can verify that both sections are present after build by using `objdump --section-headers /lib/libc.so.6 | grep hash`. It should list both .gnu.hash and .hash. Upstream report: https://sourceware.org/bugzilla/show_bug.cgi?id=29456 Report about games being broken and original bisect: https://github.com/ValveSoftware/Proton/issues/6051 Steps to reproduce: 1. Install Steam and use it to install Multiversus or Elden Ring or any other game mentioned in the Proton issue. 2. Those game do work with glibc 2.35 but do not with 2.36 |
This task depends upon
Closed by freswa (frederik)
Sunday, 14 August 2022, 16:19 GMT
Reason for closing: Fixed
Additional comments about closing: glibc-2.36-2
Sunday, 14 August 2022, 16:19 GMT
Reason for closing: Fixed
Additional comments about closing: glibc-2.36-2
Or it can be set to `both` so it's explicit for each and every linker.
The drawback is that it will slightly increase the size of each .so.