FS#79292 - glibc 2.38 without --hash-style=both brakes EAC games

Attached to Project: Arch Linux
Opened by Karl (berobad) - Thursday, 03 August 2023, 21:13 GMT
Last edited by freswa (frederik) - Friday, 04 August 2023, 16:00 GMT
Task Type Bug Report
Category Packages: Core
Status Closed
Assigned To freswa (frederik)
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 4
Private No

Details

The DT_HASH patch was removed from 2.38 probably since it didn't apply anymore.

But it seems that EasyAntiCheat still needs glibc to be build with "--hash-style=both" in the LDFLAGS to work.

A quick test with a glibc 2.38 build with --hash-style=both does work for me,
so just adding that to the LDFLAGS for glibc seems to be enough, no patch needed.
This task depends upon

Closed by  freswa (frederik)
Friday, 04 August 2023, 16:00 GMT
Reason for closing:  Fixed
Additional comments about closing:  glibc-2.38-2
Comment by freswa (frederik) - Friday, 04 August 2023, 07:25 GMT
What games are affected?
I've tested a few EAC games an at those were fine.
Comment by Bill Li (Billli11) - Friday, 04 August 2023, 10:48 GMT
Exoprimal. This is the only one installed on my PC that use EAC right now.

Can confirm rebuilding package with "--hash-style=both" added to LDFLAGS fix the problem.
Comment by freswa (frederik) - Friday, 04 August 2023, 11:44 GMT
Could you report this to the Exoprimal people? They need to update their EAC.
Comment by Arkadiusz Hiler (ivyl) - Friday, 04 August 2023, 12:58 GMT
Elden Ring is also reported as broken: https://github.com/ValveSoftware/Proton/issues/6051#issuecomment-1665542051

Look like not all the game developers have updated their EAC / EOS yet.
Comment by Philip Müller (philm) - Friday, 04 August 2023, 13:04 GMT
Why was "--hash-style=both" dropped to begin with. Game developers might not change it and a lot of gamers are using Arch based distros.
Comment by Philip Müller (philm) - Friday, 04 August 2023, 13:49 GMT
Fedora has the following in their 2.38 spec file:

# We enable DT_GNU_HASH and DT_HASH for ld.so and DSOs to improve
# compatibility with applications that expect DT_HASH e.g. Epic Games
# Easy Anti-Cheat. This is temporary as applications move to
# supporting only DT_GNU_HASH. This was initially enabled in Fedora
# 37. We must use 'env' because it is the only way to pass, via the
# environment, two variables that set the initial Makefile values for
# LDFLAGS used to build shared objects and the dynamic loader.
env LDFLAGS.so="-Wl,--hash-style=both" \
LDFLAGS-rtld="-Wl,--hash-style=both" \
%make_build -r %{glibc_make_flags}
popd
Comment by freswa (frederik) - Friday, 04 August 2023, 13:49 GMT
Fix is wip
Comment by freswa (frederik) - Friday, 04 August 2023, 15:02 GMT
Please test glibc-2.38-2 from `[core-testing]`. If you don't know how to use that, you can also download the packages here:
https://archlinux.org/packages/core-testing/x86_64/glibc/download/
https://archlinux.org/packages/core-testing/x86_64/lib32-glibc/download/

Please report back if these work. Thanks!
Comment by Bill Li (Billli11) - Friday, 04 August 2023, 15:10 GMT
Tested with Exoprimal and Halo: The Master Chief Collection.
Both working with glibc-2.38-2
Comment by Karl (berobad) - Friday, 04 August 2023, 15:44 GMT
Elden Ring worked for me with glibc-2.38-2

Loading...