All specs
Linux FdnShould KnowSystems1997

Executable and Linkable Format (ELF)

OS Interfaces & ABIs·Linux Foundation
WHY YOU NEED THIS

Every compiled binary on Linux is ELF. Understanding ELF is essential for debugging, reverse engineering, dynamic linking, build toolchains, binary patching, and tools like readelf, objdump, ldd, and patchelf.

What It Defines

Defines the binary format for executable files, shared objects (.so/.dylib), relocatable objects (.o), and core dumps on Unix/Linux systems. Specifies the ELF header, program headers (segments for OS loading), section headers (for linking: .text, .data, .bss, .rodata), dynamic linking tables (DT_NEEDED, PLT, GOT), symbol tables, relocation entries (RELA/REL), and versioned symbol support. The standard binary format on Linux, FreeBSD, Android, and most embedded systems.

Canonical (Normative)

Convenient (Practical)

Related References

elfbinarylinkerloaderlinuxexecutableshared-libraryplt
Standards Body
Linux Foundation

Non-profit hosting Linux kernel development and hundreds of open-source projects. Maintains the Linux Standard Base (LSB) for binary-compatible Linux distributions, hosts the ELF reference specifications and System V ABI documents, and stewards ELISA, OpenEmbedded, Zephyr, and other embedded/safety-critical Linux initiatives.

Visit

Related Specs

Linux FdnShould Know

AMD64 ABI

Every C/C++/Rust/Go/Swift program on x86-64 Linux follows this ABI. Understanding it is essential for FFI bindings, inline assembly, debugger step-over logic, and compiler backend development.

SystemsOS Interfaces & ABIs
Details
ArmShould Know

AAPCS64

Every function call on AArch64 (Apple Silicon, Android arm64, AWS Graviton) follows AAPCS64. Required for correct assembly, FFI bindings from any language, and compiler backend targeting Arm64.

SystemsOS Interfaces & ABIs
Details
RISC-VNiche

RISC-V ABI

Required for writing RISC-V assembly, setting up cross-compilation toolchains, or building compilers and OSes targeting RISC-V.

SystemsOS Interfaces & ABIs
Details
IEEE Std 1003.1-2017Open GroupMust Know

POSIX

POSIX defines the lingua franca of Unix/Linux systems programming. Every system call pattern, signal handler, file descriptor idiom, and shell script convention in the Linux/macOS world comes from this spec.

SystemsProductOS Interfaces & ABIs
Details
DWARF 5DWARFNiche

DWARF

Every debugger, profiler, crash reporter, and sanitizer on Linux/macOS reads DWARF. Understanding it is critical for improving build-time debug quality, diagnosing toolchain issues, and building custom binary analysis tools.

SystemsOS Interfaces & ABIs
Details