What is the official ELF format reference for Linux?

There is the ELF 1.2 specification, which is from 1995 and outdated (does not include DT_RUNPATH for instance).

But apart from that, it seems there is only a draft version System V Application Binary Interface from 2003. I can't seem to find a version that's not a draft.

Then, there is an Oracle Solaris version, which seems to be based on that draft.

Notably the 2003 draft and the Solaris version seem to disagree on whether DT_RPATH is to be ignored on shared libraries or not; compare the tables 2003 draft and Solaris. They should be ignored according to that 2003 draft, they should not be according to Solaris.

On my Ubuntu 16 machine, it seems the runtime linker does not ignore DT_RPATH on shared libraries, so it looks like it's following the Solaris specs, not the 2003 draft.

What is supposed to be the official ELF specification for Linux?

Edit: from LSB 5.0.0:

LSB-conforming implementations shall support the object file information and system actions that create running programs as specified in the System V ABI and System V ABI Update and as further required by this specification and the relevant architecture specific part of the LSB Core Specification.

I don't see the LSB document mention how to deal with DT_RPATH on shared libraries. Does that mean ld is not conforming to LSB as it should ignore RPATH on shared libraries?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.