====== Executable and Linkable Format ====== The Executable and Linkable Format (ELF) is a file format for binary executable files, object code, shared libraries, and core dumps (diagnostic snapshots of running software). It is a multi-section file format and can therefore be readily extended with additional information, such as IR for [[Link Time Optimization]] or debugging data. ELF is used across many different operating systems on a range of software platforms. ===== Tools ===== ELF files are used by the kernel and many programs (as, ld, and so forth). These utility tools are additionally useful in working with ELF files: * objdump - displays information from ELF object files * readelf - displays information about an ELF file * gdb - GNU debugger * elfedit - alters ELF header information * addr2line - converts a memory address into the corresponding filename and line number (for debugging) * strip - removes symbols (including those generated by the -g compiler option) ===== Resources ===== * [[https://linux-audit.com/elf-binaries-on-linux-understanding-and-analysis|The 101 of ELF files on Linux: Understanding and Analysis]] * [[https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#Non-Unix_adoption|Executable and Linkable Format]] (Wikipedia) * The manpage for elf(5)