Yasm Supported Object Formats

February 2007
Yasm
Peter Johnson

    peter@tortall.net

2006 Peter Johnson
yasm_objfmts 7
yasm_objfmts Yasm Supported Object Formats
`yasm` `-f objfmt` `...`

## Description

The standard Yasm distribution includes a number of modules for different object formats (Yasm's primary output).

The object format is selected on the yasm 1 command line by use of the `-f objfmt` command line option.

## bin

The bin object format produces a flat-format, non-relocatable binary file. It is appropriate for producing DOS .COM executables or things like boot blocks. It supports only 3 sections and those sections are written in a predefined order to the output file.

## coff

The COFF object format is an older relocatable object format used on older Unix and compatible systems, and also (more recently) on the DJGPP development system for DOS.

## dbg

The dbg object format is not a real object format; the output file it creates simply describes the sequence of calls made to it by Yasm and the final object and symbol table information in a human-readable text format (that in a normal object format would get processed into that object format's particular binary representation). This object format is not intended for real use, but rather for debugging Yasm's internals.

## elf

The ELF object format really comes in three flavors: elf32 (for 32-bit targets), elf64 (for 64-bit targets and elfx32 (for x32 targets). ELF is a standard object format in common use on modern Unix and compatible systems (e.g. Linux, FreeBSD). ELF has complex support for relocatable and shared objects.

## macho

The Mach-O object format really comes in two flavors: macho32 (for 32-bit targets) and macho64 (for 64-bit targets). Mach-O is used as the object format on MacOS X. As Yasm currently only supports x86 and AMD64 instruction sets, it can only generate Mach-O objects for Intel-based Macs.

## rdf

The RDOFF2 object format is a simple multi-section format originally designed for NASM. It supports segment references but not WRT references. It was designed primarily for simplicity and has minimalistic headers for ease of loading and linking. A complete toolchain (linker, librarian, and loader) is distributed with NASM.

## win32

The Win32 object format produces object files compatible with Microsoft compilers (such as Visual C++) that target the 32-bit x86 Windows platform. The object format itself is an extended version of COFF.

## win64

The Win64 object format produces object files compatible with Microsoft compilers that target the 64-bit x64 Windows platform. This format is very similar to the win32 object format, but produces 64-bit objects.

## xdf

The XDF object format is essentially a simplified version of COFF. It's a multi-section relocatable format that supports 64-bit physical and virtual addresses.

## See Also

yasm 1 , yasm_arch 7