LWN: Comments on "The ABI status of ELF hash tables" https://lwn.net/Articles/904892/ This is a special feed containing comments posted to the individual LWN article titled "The ABI status of ELF hash tables". en-us Wed, 17 Sep 2025 07:16:22 +0000 Wed, 17 Sep 2025 07:16:22 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net The ABI status of ELF hash tables https://lwn.net/Articles/912550/ https://lwn.net/Articles/912550/ sammythesnake <div class="FormattedComment"> I don't have any skin in this game, but if I were to try to justify classifying this as "not an ABI change", I think I'd say that the format of the symbol hash is an implementation detail not intended for use outside of the linker.<br> <p> If the format isn't documented[0] in the documentation for developers using the library, that would be consistent with that position.<br> <p> It's a weaker guarantee than the one provided by the kernel, though (using the Hyrum's Law[1] model of what constitutes an ABI) but it's a valid position to take if the hash format *is* an implementation detail. <br> <p> [0] I have very little interest in reading the libc documentation, so maybe it is. The *newer* format is apparently not well documented, though, and the old format predates glibc's use of it, so it being documented for that reason doesn't necessarily torpedo this line of reasoning - it being listed inn the glibc documentation in language other than as an implementation detail would, though...<br> <p> [1] <a rel="nofollow" href="https://www.hyrumslaw.com/">https://www.hyrumslaw.com/</a><br> </div> Wed, 26 Oct 2022 18:36:02 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/912542/ https://lwn.net/Articles/912542/ sammythesnake <div class="FormattedComment"> So, "intuitive minimax" then?<br> <p> <a rel="nofollow" href="https://en.m.wikipedia.org/wiki/Minimax">https://en.m.wikipedia.org/wiki/Minimax</a><br> <p> To be fair, I use this kind of thing (along with other reasonable understandings of less deterministic but still somewhat predictable behaviour - something more akin to a Bayesian model, but again more intuitive than rigorous) all the time while doing such boringly quotidian things as driving - it's not at all rare that I twig somebody's planning to execute a turn a fair time before they remember that indicators are a thing, for example (assuming they ever actually do - BMW/Audi/etc. stereotypes notwithstanding) It's literally saved my life on a few occasions...<br> </div> Wed, 26 Oct 2022 17:54:34 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/908250/ https://lwn.net/Articles/908250/ daenzer <div class="FormattedComment"> <font class="QuotedText">&gt; The game should have shipped with all required .so libraries in the first place, though. Including libc.</font><br> <p> I don&#x27;t think I&#x27;ve ever seen a game ship its own copy of libc, but I have seen lots of them ship their own copies of libstdc++ (and various other libraries).<br> <p> The result was invariably that the game stopped working sooner or later, because its copies of those libraries were too old for other things (usually GPU driver components) mapped into the process. Removing the games&#x27; copies of the libraries made them work again.<br> <p> libc would be even more likely to hit this, since basically everything links against it, it never changes SONAME, and it often bumps the symbol version of existing ABI symbols.<br> </div> Fri, 16 Sep 2022 08:25:38 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/907279/ https://lwn.net/Articles/907279/ nix <div class="FormattedComment"> <font class="QuotedText">&gt; I also find it appalling that they say that they are somehow &quot;upstream ELF development&quot;</font><br> <p> Looking at it practically... they are, and have been for well over a decade at this point. Perhaps 15--17 years: i.e., since about as long ago as the introduction of DT_GNU_HASH!<br> </div> Tue, 06 Sep 2022 08:52:08 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/906994/ https://lwn.net/Articles/906994/ Darkstar <div class="FormattedComment"> <font class="QuotedText">&gt; I’m suspicious of anything that requires me to run a driver in kernel mode just to play a game.</font><br> <p> You probably wouldn&#x27;t play any competitive First-Person Shooter games anyway, I assume?<br> <p> Because if you did, and you knew that everyone else could be cheating on you without you knowing, I guess you would be more open to having a kernel-based anti-cheat driver.<br> </div> Fri, 02 Sep 2022 13:45:10 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/906847/ https://lwn.net/Articles/906847/ Vipketsh <div class="FormattedComment"> Surely you jest. You are also complaining to all those new fangled static-link only languages for wasting your disk space, right ?<br> <p> On my raspberry, which still has the DT_HASH entry, the section is less than 16kb. So, the glibc developers decided that compatibility is just not worth 16kb, in an otherwise 2mb big binary. It&#x27;s not like the developers need to put in work just to keep backwards compatibility -- it&#x27;s just an option to an external program for crying out loud!<br> <p> It&#x27;s very elitist how the glibc developers are handling this case.<br> </div> Thu, 01 Sep 2022 19:43:47 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/906320/ https://lwn.net/Articles/906320/ Wol <div class="FormattedComment"> Can you do that if it&#x27;s a binary you don&#x27;t have source for?<br> <p> Eg I&#x27;ve got a libc5 binary I would love to run, but it was a commercial product ...<br> <p> Cheers,<br> Wol<br> </div> Mon, 29 Aug 2022 08:56:26 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/906313/ https://lwn.net/Articles/906313/ HenrikH <div class="FormattedComment"> <font class="QuotedText">&gt;If you want to run binary on older system you have to use older libc. It&#x27;s as simple as that.</font><br> Or you compile the binary for the old symbol with the new glibc, since glibc contains versioned symbols including all the old ones you can tell the linker exactly which version of the function that your binary wants to use. So while it is a real pain it can be done.<br> </div> Sun, 28 Aug 2022 21:04:36 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/906292/ https://lwn.net/Articles/906292/ WolfWings <div class="FormattedComment"> To clarify, this is the first time I&#x27;m aware of that such a change landed that can&#x27;t simply be aliased around by tacking an older version of a given function into your codebase, or even in most cases simply aliased to the old version.<br> <p> They&#x27;ve never done a breaking change at the startup libc functions before.<br> </div> Sat, 27 Aug 2022 21:36:00 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905947/ https://lwn.net/Articles/905947/ milesrout <div class="FormattedComment"> The bigger that my disk is, the bigger 1% is. Of course 1% disk space is still appreciable in the modern age. <br> </div> Thu, 25 Aug 2022 04:47:15 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905757/ https://lwn.net/Articles/905757/ JanC_ <div class="FormattedComment"> I think you mean DT_HASH (not DT_GNU_HASH) is de facto deprecated.<br> <p> Keeping it available might be useful for some general purpose distros that want compatibility with very old binaries, but seems useless for e.g. most embedded systems or cloud images.<br> </div> Tue, 23 Aug 2022 15:24:39 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905754/ https://lwn.net/Articles/905754/ JanC_ <div class="FormattedComment"> DT_HASH wasn’t removed though, it’s just no longer included by default if you use the upstream build options.<br> <p> The GNU/glibc people should have documented this better though (both the new table format as well as the changes to the defaults). Based on that, operating systems (distros) could then choose to maintain compatibility with SysV or not.<br> </div> Tue, 23 Aug 2022 15:12:29 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905692/ https://lwn.net/Articles/905692/ mathstuf <div class="FormattedComment"> <font class="QuotedText">&gt; Not to mention if you load C++ libraries with RTLD_LOCAL they usually can&#x27;t be unloaded anyway</font><br> <p> Pretty much anything with global statics is nigh unloadable already. macOS just no-ops unloading anything that mentions `thread_local` as well. I don&#x27;t see much value in being able to unload libraries. Windows is a bit different because there are APIs to query libraries without actually loading them (but is not that useful to anything caring about cross-platform support).<br> </div> Tue, 23 Aug 2022 11:47:30 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905658/ https://lwn.net/Articles/905658/ bartoc <div class="FormattedComment"> What windows does is a lot closer to dlmopen than it is to RTLD_LOCAL. In windows if you load (or link against) two dlls that both link against the same dll themselves, then they can very well use different versions of that dll.<br> <p> You can actually have stuff like multiple different C runtimes in the same process (although it&#x27;s super likely to result in sadness and chaos as soon as one touches the other). Still, if you are very careful it is possible. They do need to be named differently though.<br> <p> Not to mention if you load C++ libraries with RTLD_LOCAL they usually can&#x27;t be unloaded anyway, _AND_ some (but not all) of their symbols will actually be used to resolve references in future libraries. RTLD_LOCAL can also be promoted to RTLD_GLOBAL if the library is a dependency of an RTLD_GLOBAL library.<br> <p> dlmopen provides something much more similar to windows DLLs, but you can only have 16 namespaces and according to the manual (typos from there):<br> <font class="QuotedText">&gt; As at glibc 2.24, specifying the RTLD_GLOBAL flag when calling</font><br> dlmopen() generates an error. Furthermore, specifying<br> RTLD_GLOBAL when calling dlopen() results in a program crash<br> (SIGSEGV) if the call is made from any object loaded in a<br> namespace other than the initial namespace.<br> <p> So it seems like it&#x27;s a little useless. Someone should fix this stuff, and perhaps allow some kind of namespacing for stuff used via the linker, without dlsym. I guess if you really want that you can just use wine&#x27;s loader.<br> </div> Tue, 23 Aug 2022 02:55:07 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905656/ https://lwn.net/Articles/905656/ bartoc <div class="FormattedComment"> The &quot;norm&quot; should probably be to use -z defs -z lazy --no-allow-shlib-undefined. That is &quot;report a link-time error if any symbols are undefined, but don&#x27;t tell the loader to resolve all symbols at startup, and also report undefined symbols that are in shared libraries I linked to&quot;. For a lot of applications using &quot;-z now&quot; is allright, but for a lot of libraries (and some apps) -z lazy is better because the set of used symbols depends highly on the path execution takes. Think of a library like OpenImageIO or VTK that has a ton of format parsing libraries linked to it, most of which won&#x27;t be used by a given application.<br> </div> Tue, 23 Aug 2022 01:49:29 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905654/ https://lwn.net/Articles/905654/ bartoc <div class="FormattedComment"> Go kinda has to avoid glibc because of how it&#x27;s coroutines work, fundamentally it has to be able to turn what would be syscalls in glibc into &quot;submit async work then start running a new coroutine&quot;), This is basically why I really don&#x27;t love go&#x27;s concurrency approach, I would rather just eat the size of the kernel stack and use a real thread.<br> <p> You probably need something like io_uring to actually save syscalls with this approach, and I don&#x27;t think go uses it.<br> </div> Tue, 23 Aug 2022 01:38:26 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905650/ https://lwn.net/Articles/905650/ bartoc <div class="FormattedComment"> This kinda stuff works if ALL libraries that depend on libc (which basically means all libraries) are bundled with the game. Unfortunately, that is not a good option, since you really want to use (at least) the graphics stack from the host system. Additionally, you probably do want libraries like openssl to update out from under you, either from something like the steam runtime, a flatpak runtime, or the distribution itself. Guess what: libraries like openssl and gnutls load plugins, and those plugins assume that they are being loaded into a process with a glibc at least as new as the one the openssl/gnutls was built for.<br> <p> Basically, it&#x27;s really bad to bundle shared libraries if they could possibly be dependencies of anything you want to load from the base system. If you really want to bundle such libraries, you should probably consider reangling their symbols, but that&#x27;s not a good option for something like glibc as it would make things like threads work in really bizarre ways.<br> </div> Mon, 22 Aug 2022 21:54:27 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905646/ https://lwn.net/Articles/905646/ flussence <div class="FormattedComment"> <font class="QuotedText">&gt; Consider an esports context where an entire team&#x27;s computers (and thus, half the computers in the game) could be colluding.</font><br> <p> If it&#x27;s an entirely remote event then the problem is interesting, but at a live event I&#x27;d imagine a client-server setup where one team&#x27;s clients are raising red flags with the server and the others are silent would quickly become embarrassing to the cheaters.<br> <p> FWIW, even proprietary anti-cheat software hasn&#x27;t stopped people cheating all the way to finals on stage and then getting caught there.<br> </div> Mon, 22 Aug 2022 19:58:21 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905627/ https://lwn.net/Articles/905627/ mathstuf <div class="FormattedComment"> It is not the same. RTLD_LOCAL is not usable in open-ended &quot;I load plugins via dlopen&quot; mechanisms. The problem is when you have:<br> <p> pluginA.so -&gt; liblang.so<br> pluginB.so -&gt; liblang.so<br> <p> Loading pluginA with RTLD_LOCAL makes liblang.so enter the same state. When pluginB is loaded, it fails because it is not &quot;allowed&quot; to access liblang.so because it is &quot;local&quot; to pluginA. It&#x27;s probably more useful when you know plugins are standalone or you&#x27;re doing some restricted delay-load mechanism.<br> </div> Mon, 22 Aug 2022 17:00:47 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905608/ https://lwn.net/Articles/905608/ larkey <div class="FormattedComment"> Yep, I often find myself on the GNU side of things (despite still being heart broken over Solaris) but this?! DT_HASH is<br> <p> * standard<br> * universally available<br> * never officially deprecated (blog posts don&#x27;t count)<br> * documented<br> * cross platform<br> <p> The GNU alternative is<br> <p> * GNU/Linux specific<br> * undocumented<br> * non-standard<br> <p> Simply removing it is just absurd and the reason stated is also just sad. If I care about a *very* small foot print I wouldn&#x27;t be using the GNU tooling anyway, likely :-)<br> <p> I also find it appalling that they say that they are somehow &quot;upstream ELF development&quot; and further that everyone dealing with this need to follow all their blogs? This is just hybris.<br> </div> Mon, 22 Aug 2022 14:40:45 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905553/ https://lwn.net/Articles/905553/ cortana <div class="FormattedComment"> Hmm<br> <p> I&#x27;ve always found glibc&#x27;s documentation patchy at best. Lots of it is documented nicely in the manual, but there are chunks (pthreads, getaddrinfo, the _l variants of the ctype/string functions) that are missing entirely!<br> </div> Mon, 22 Aug 2022 08:40:59 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905549/ https://lwn.net/Articles/905549/ NYKevin <div class="FormattedComment"> The rules prohibit such collusion, by assumption (or else it would not be brought up in a discussion of cheating in the first place). So your suggestion boils down to &quot;don&#x27;t play if you don&#x27;t like other people cheating.&quot; Which is terrible for obvious reasons.<br> </div> Mon, 22 Aug 2022 07:12:21 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905529/ https://lwn.net/Articles/905529/ maskray <div class="FormattedComment"> <font class="QuotedText">&gt; Blaming the EAC developers for not keeping up with Linux ELF hash-table formats might not be entirely fair. </font><br> <p> Probably. But DT_HASH has mostly disappeared from Fedora for 16+ years and several other distributions for similarly long years.<br> libc.so.6 does contain DT_HASH for a long time, but it is just a rare exception.<br> <p> <font class="QuotedText">&gt; The DT_HASH format is mandated by the System V ABI specification, the DT_GNU_HASH format is undocumented, and there has been no deprecation campaign to get users to move on. Chances are those developers are as surprised as anybody and haven&#x27;t just been ignoring the &quot;switch to DT_GNU_HASH&quot; entry languishing in their issue tracker for the last decade or so. Regardless of blame, though, something needs to be done to solve this problem and save gamers from the prospect of having to get some actual work done.</font><br> <p> I think it is fair to say that DT_GNU_HASH is de facto deprecated.<br> DT_GNU_HASH not in generic ABI is not an issue since In general a processor supplement ABI or an operating system ABI can replace a generic ABI feature, and we should not read too much from the generic ABI wording.<br> <p> I have more to say on <a href="https://maskray.me/blog/2022-08-21-glibc-and-dt-gnu-hash">https://maskray.me/blog/2022-08-21-glibc-and-dt-gnu-hash</a><br> <p> </div> Mon, 22 Aug 2022 00:19:57 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905528/ https://lwn.net/Articles/905528/ k8to <div class="FormattedComment"> Either way, the easy anti-cheat developers just admitted that this component of their tool is easily misled, which kind of invalidates the utility of having that functionality especially now that it&#x27;s public knowledge.<br> </div> Sun, 21 Aug 2022 23:52:18 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905525/ https://lwn.net/Articles/905525/ bartoc <div class="FormattedComment"> sometimes (probably more often) called &quot;game sense&quot; it&#x27;s the ability to basically use very limited information to predict what your opponent is doing. Basically knowing the game the metagame so well you can basically tell what your opponent is doing by just thinking &quot;what would I do&quot; and evaluating what actions they could do would be worst for you.<br> <p> In any event really good game sense can result in you taking actions to respond to stuff before you can see it. You see this in Starcraft a lot, it can look like someone is using maphacks but in reality they are just really experienced.<br> </div> Sun, 21 Aug 2022 21:53:40 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905522/ https://lwn.net/Articles/905522/ jkingweb <div class="FormattedComment"> <font class="QuotedText">&gt; You could try and detect that the player was seeing more info than they should behaviorally, but then you could start detection &quot;star sense&quot; as cheaters, which is not great.</font><br> <p> What is &quot;star sense&quot;?<br> </div> Sun, 21 Aug 2022 20:33:22 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905518/ https://lwn.net/Articles/905518/ fw <div class="FormattedComment"> glibc already prefers DT_GNU_HASH over DT_HASH when an object has both. I assume it&#x27;s been this way since the introduction of DT_GNU_HASH.<br> <p> I haven&#x27;t look at the tool. It&#x27;s not just consistency checks those DT_HASH lookups could be used for. Maybe they use DT_HASH lookups to find the original definition of dlsym after interposing it.<br> </div> Sun, 21 Aug 2022 16:41:36 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905515/ https://lwn.net/Articles/905515/ k8to <div class="FormattedComment"> I love it. <br> </div> Sun, 21 Aug 2022 13:23:56 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905514/ https://lwn.net/Articles/905514/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; Is it surprising that languages other than C avoids the C runtime library?</font><br> <p> Yes and no <a href="https://gankra.github.io/blah/c-isnt-a-language/">https://gankra.github.io/blah/c-isnt-a-language/</a><br> <p> <font class="QuotedText">&gt; pretty much all other Linux distributions are &quot;GNU/Linux&quot; and use glibc.</font><br> <p> If you look beyond &quot;interactive&quot; users and at the number of instances of Linux kernels running, I suspect Linux &quot;distributions&quot; are still niche. Still waiting for the &quot;Year of the Linux Desktop&quot; and breakages like this one don&#x27;t exactly help.<br> <p> <font class="QuotedText">&gt; Rust, of course, uses glibc.</font><br> <p> ... on Linux &quot;distributions&quot;.<br> </div> Sun, 21 Aug 2022 13:21:08 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905512/ https://lwn.net/Articles/905512/ jhoblitt <div class="FormattedComment"> There is a package to add glibc to alpine as there is a surprising amount of software which is broken by musl. It don&#x27;t use alpine as an OCI base layer as often as I used to because of the occasional random problem caused by software that depends on glibc.<br> <p> For better or worse, glibc is defining a defacto ABI for &quot;Linux&quot;. <br> </div> Sun, 21 Aug 2022 13:15:47 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905507/ https://lwn.net/Articles/905507/ jengelh <div class="FormattedComment"> <font class="QuotedText">&gt;on Windows the symbols are namespaced to the name of the dll they bind to, [on Linux and other ELF platforms symbol names are global]</font><br> <p> That sounds just like RTLD_LOCAL on ELF systems. Moreover, I don&#x27;t see ld.so using RTLD_GLOBAL during the initial program start, that seems to be a dlopen-exclusive. So shouldn&#x27;t symbols be appropirately namespaced? (But indeed I remember symbols sharing the global scope, dunno what&#x27;s going on.)<br> </div> Sun, 21 Aug 2022 11:14:50 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905509/ https://lwn.net/Articles/905509/ willy <div class="FormattedComment"> Nobody seems to have pointed out the obvious solution here -- make it in the EAC developers interests to fix the bug.<br> <p> If the linker preferentially uses DT_GNU_HASH and ignores DT_HASH, and EAC only checks DT_HASH, then create cheats for popular games that include a faked DT_HASH section which pretends everything is OK.<br> <p> </div> Sun, 21 Aug 2022 10:38:04 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905504/ https://lwn.net/Articles/905504/ jengelh <div class="FormattedComment"> <font class="QuotedText">&gt;Consider an esports context where an entire team&#x27;s computers (and thus, half the computers in the game) could be colluding.</font><br> <p> Any 2-team n-vs-n player setup reduces to a 1-vs-1 problem, because the other team could *also* be colluding.<br> Playground piece of wisdom: If you don&#x27;t like the rules or how they are applied by the other player(s) and/or the umpire (if there is one), stop participating.<br> </div> Sun, 21 Aug 2022 09:30:53 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905499/ https://lwn.net/Articles/905499/ comex <div class="FormattedComment"> At least on macOS, there is no shipping of old versions of libc. Instead, there&#x27;s a compiler flag to explicitly declare the minimum OS version you want the binary you&#x27;re compiling to run on. Each function declared in OS header files includes a minimum OS version, and attempting to use an API that&#x27;s too new is a compilation error. In situations like the mentioned one, where the ABI for existing APIs changes (such that newer OSes can run old binaries but not the reverse), the header files, or sometimes the compiler or linker itself, will pick the old or new ABI depending on the same declared minimum OS version.<br> <p> That said, Xcode does eventually drop support for targeting old OS versions; the current lowest minimum-OS option is 10.9 from 2013.<br> <p> <p> </div> Sun, 21 Aug 2022 06:52:02 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905496/ https://lwn.net/Articles/905496/ drago01 <div class="FormattedComment"> No, but in that case it is even documented.<br> </div> Sun, 21 Aug 2022 05:44:07 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905495/ https://lwn.net/Articles/905495/ k8to <div class="FormattedComment"> Maybe I&#x27;m really slow, but I&#x27;m not sure how this is particularly relevant.<br> <p> I don&#x27;t see the internal details of the structures used by the dynamic linker as much of an ABI myself. Yeah, the old format is mandated by SysV, but I don&#x27;t care if my linux distribution is SysV compliant. I don&#x27;t see anything useful provided by the SysV specification at this point. Needless change is wasteful but that exact point in history doesn&#x27;t seem interesting to me. I also think it&#x27;s right to chide those responsible for moving us to an undocumented format. It&#x27;s not something many people will need to know, but a transparent system is a fixable system.<br> <p> But all that aside, I don&#x27;t see how symbol namespacing really means something one way or another in this case.<br> </div> Sun, 21 Aug 2022 04:54:58 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905492/ https://lwn.net/Articles/905492/ bartoc <div class="FormattedComment"> The problem isn&#x27;t really the syscall ABI, a bigger problem is nss plugins. Have fun not being able to resolve hostnames properly because your nss plugins won&#x27;t load with an old version of glibc. You can static link them, but who knows if you&#x27;ll get everything you need, or in the right configuration.<br> <p> Plugins in general are what really screw up applocal deployment on linux, you just have to be aware of them, and glibc loads plugins on almost all linux systems.<br> </div> Sun, 21 Aug 2022 03:02:06 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905491/ https://lwn.net/Articles/905491/ bartoc <div class="FormattedComment"> You could try and detect that the player was seeing more info than they should behaviorally, but then you could start detection &quot;star sense&quot; as cheaters, which is not great.<br> <p> Ultimately an open source anti-cheat probably could catch a lot of people, anti-cheat by it&#x27;s nature tends not to catch the kind of people that can decipher anti-cheat source code. It&#x27;s more to catch people using known cheats I think.<br> </div> Sun, 21 Aug 2022 02:57:02 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905484/ https://lwn.net/Articles/905484/ josh <div class="FormattedComment"> I&#x27;m normally all for &quot;any interface people rely on is ABI&quot;, as the Linux kernel does. But there&#x27;s a limit to that. Suppose something hashed the assembly code of `memcpy` and broke if it changed? Suppose something hashed ld-linux.so (the dynamic linker) and broke if it changed? Would you consider those &quot;ABI&quot;?<br> </div> Sat, 20 Aug 2022 23:41:35 +0000 The ABI status of ELF hash tables https://lwn.net/Articles/905487/ https://lwn.net/Articles/905487/ LtWorf <div class="FormattedComment"> You never ran ldd on a go program uh?<br> <p> They do link libc<br> </div> Sat, 20 Aug 2022 23:30:38 +0000