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
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To freswa (frederik)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 2
Private No

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
Comment by freswa (frederik) - Tuesday, 09 August 2022, 20:24 GMT
As I wrote in the github issue. I'm looking into it.
Comment by Arkadiusz Hiler (ivyl) - Tuesday, 09 August 2022, 20:37 GMT
Ah. I haven't seen a bug report over here and I haven't made the connection that you were talking about Arch. Thank you.
Comment by Arkadiusz Hiler (ivyl) - Friday, 12 August 2022, 13:44 GMT
In the linked upstream report glibc developers suggest removing `--with-linker-hash-style=gnu` from gcc's `configure` invocation so the linker's default (both for The GNU Linker, sysv for mold) will be respected. Apparently Gentoo did that a few months ago for unrelated reasons.

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.
Comment by freswa (frederik) - Friday, 12 August 2022, 20:11 GMT
Please check glibc in [testing]

Loading...