A few folks have asked me the generic ABI status (unmaintained?) and the availability of an up-to-date specification (no). I compiled “History” and “Evolution of the generic ABI” in the blog post.<p>I have two specific questions:<p>- Key features (symbol visibility, section groups, SHF_MERGE, etc) were all available as of April 2001. Where can we find the discussion mailing lists? Are they still available?<p>- How does the ABI end up being “All rights reserved” by SCO? Tool Interface Standard (TIS) Portable Formats Specification, version 1.2 effectively put the specification in the public domain.
> Q18: How can you get a single binary to work identically across all these diverse systems?<p>> Most Unix-on-Intel binary packages are already largely similar. Almost all such operating systems use the "ELF" binary 'packaging'; the various operating systems have small but significant differences, though, that make each system's ELF binary unusable on others'.<p>Though the scope has diminished with the decline of proprietary unixen, there is a nice bright spot with APE binaries ( <a href="https://justine.lol/ape.html" rel="nofollow">https://justine.lol/ape.html</a> ) which are in some regards even <i>more</i> portable since they work on Darwin (which natively uses Mach-O) and NT (which natively uses PE).
> Despite this uncertainty, innovation within the ELF ecosystem should continue.<p>> In practice, achieving consensus among major toolchain vendors (GNU and LLVM) may be sufficient, even without formal approval from the generic ABI.<p>That makes it sound easy. GNU projects seem to be very conservatively maintained. LLVM has around one trillion open pull requests.<p>I came up with a little mechanism to get the kernel to automatically load into memory data embedded into the program. I used it in my programming language to embed code into the interpreter so that they can be automatically loaded and executed.<p><a href="https://www.matheusmoreira.com/articles/self-contained-lone-lisp-applications" rel="nofollow">https://www.matheusmoreira.com/articles/self-contained-lone-...</a><p>Only the maintainer of the relatively new mold linker cared to implement a helpful feature to make this kind of thing possible and easy. I requested the same feature in GNU ld and the idea wasn't exactly received with enthusiasm. I'm not sure LLVM ever received it at all.<p>And that was just a linker option to add some extra PT_NULL segments for easy and efficient patching. Can't even imagine the effort it would take to <i>actually change</i> something about this ABI.
I'd be interested in reading about the history of object file formats in general. I'm wondering what motivates them being so relatively complicated for something that seems so conceptually simple; is it historical baggage or is it essential complexity?