Executable and Linkable Format

The Executable and Linkable Format ( ELF ) describes the standard binary executable programs on many UNIX -like operating systems such as Linux or FreeBSD.

History

The format was originally developed by Unix System Laboratories and was accepted in 1993 by the Tool Interface Standard Committee as part of the Tool Interface Standard ( TIS ) as a standard for executable programs. In 1995, the format was introduced in Linux because it a.out faster and more flexible than the previously used formats and COFF was.

Technical Details

Special features of this format include dynamic linking and loading, the easy control of the programs already running and easy way to create dynamic libraries. The representation of the control data, in contrast to other proprietary formats into a ELF file is always platform independent. It also provides an opportunity to identify the object files to parse and interpret the same, that is to perform.

The ELF format does not provide the possibility of fat binaries, that is code for more than one target platform (eg x86 and ARM) to store in the same binary. An ELF extension called FatELF, the retrofit of this ability has not been successful to date.

The runtime library libelf is a useful helper to handle ELF files to read for example information.

Construction

An ELF file can contain up to five parts:

  • Header information (ELF header)
  • Program header table (program header table )
  • Section header table ( section header table )
  • The sections (ELF sections )
  • The segments ( ELF segment)

File Types

The three main types of ELF files

  • Executable
  • Relocatable
  • Shared object

All types of files contain the code, data, and information about the program, the operating system and the linker, which is required at run time.

Executable

This file type provides the necessary information for the operating system to create a new process that can access within the file on the code and the data.

Relocatable

This type of file describes how he has to be linked with other object files, so that it an executable or a dynamic library can be produced.

Shared object

This file type contains information for the static and dynamic linking matter.

FatELF: universal binaries for Linux

FatELF is an ELF binary format extension, developed by Ryan C. Gordon, which Fat adds binary capabilities. In addition to different CPU architectures with varying data word sizes ( for example, 32 -bit or 64-bit systems ) or byte order can be also support software platform variations, such as different OS ABIs (or versions). A sample implementation for Ubuntu 9.04 is available. Integration into the Linux kernel is still pending.

322504
de