Clone this wiki locally
ELF Object Format
The Executable and Linkable Object Format is the primary object format for many Unix-type operating systems including FreeBSD and GNU/Linux. It appears in three forms:
- Shared object files (.so)
- Relocatable files (.o)
- Executable files (no convention)
Yasm only directly supports relocatable object files. Other tools, such as the GNU Linker "ld", help turn object files into the other formats.
Yasm ELF Support
Yasm provides support of most basic ELF features. Several advanced features are still lacking, such as the ability to provide one's own hashing function.
ELF supports the x86 architecture in its x86 and AMD64 machine variations.
As other architectures, machines, and debugging formats that can work with ELF are added to Yasm, expect to see ELF support for them.
ELF's section-based output supports attributes on a per-section basis. These attributes include "alloc", "exec", "write", "progbits", and "align". Except for align, they can each be negated by prepending "no", e.g., "noexec". They are later read by the operating system to select the proper behavior for each section. For more information, see the Yasm manual section on ELF Sections.
- ELF for x86 (pdf) (from x86.org's Tools Interface Standards)
- ELF 64bit (pdf) (includes HP and HP-UX extensions)
For Future reference: