On Sun, Aug 21, 2022 at 9:19 AM Jan Drögehoff <sentrycraft123(a)gmail.com> wrote:
On 8/21/22 12:44, Jakub Jelinek wrote:
> On Sun, Aug 21, 2022 at 12:05:11PM +0200, Jan Drögehoff wrote:
>>> It's Epic's fault. They must update their anti-cheat to use the
modern
>>> API.
>> More reports have come out claiming this also affects the game Shovel
>> Knight[2] and the open source library libstrangle[3], there is the non 0
>> chance that there are more programs out there in the wild that this will
>> break.
>>
>> It feels irresponsible of the glibc maintainers to suddenly respect the
>> toolchains desired hash type when they haven't for years and then do it
with
>> little to no announcement resulting in broken software
> To be precise, everything in Fedora except glibc is only built with
> DT_GNU_HASH and no DT_HASH since July 2006, glibc has been an exception
> that has been built with both because of statically linked programs from 16+
> years ago that wouldn't support it.
I think its worth putting an emphasis on the fact that this was glibc
intentionally ignoring the toolchain hash type and simply going with
both and not something Fedora explicitly decided to do.
> If all they want is be able to interpose dlsym, they could just use
> dlvsym to look up the original sym, instead of diving into the hash tables.
I do not think the change on glibcs part is bad, the hack was terrible
to begin with
but removing it broke the ABI and the lack of any announcement of it
beforehand is now causing problems that distro maintainers and software
developers have to deal with
Right. To make matters worse, *nobody* outside of the glibc developers
knew DT_HASH was deprecated for the GNU ELF ABI. And DT_GNU_HASH isn't
specified anywhere that I found. Additionally, given that DT_HASH is
currently mandatory in the SysV ABI (which is what Linux uses), it's
clear there's a documentation problem.
I don't disagree that glibc should respect what distros set, I'm just
asking us to build glibc with a DT_HASH table added until a formal
deprecation/retirement cycle is done with all stakeholders aware of
the change and everyone aware of the consequences of such a breakage.
--
真実はいつも一つ!/ Always, there's only one truth!