Fat binary

from Wikipedia, the free encyclopedia

The English term Fat Binary (translated: Fat Binary File ) describes a computer program that can be run unmodified on computers whose CPUs actually have completely different instruction set architectures (English Instruction Set Architecture , or ISA for short). This is achieved by combining several programs that can run on the respective CPU types in a correspondingly structured binary container file. The operating system is then responsible for loading the required program from this container and executing it.

Apple

Apple Universal Binary Logo

Fat binaries were used, for example, when Apple switched from CPUs of the 68k family to PowerPC in 1994 . Many programs published during the transition period contain machine code both for Macintosh computers with a CPU from the 68k family and for those with the then new PowerPC.

For the transition from the PowerPC CPUs to the Intel CPUs from the Core Duo and Core 2 Duo series in 2006, Apple again used fat binaries . However, these have now been referred to as Universal Binary , a format that theoretically enables the unification of code for up to over four billion different architectures.

Linux

Logo of the Linux Fat Binary implementation FatELF

FatELF is a fat binary implementation for Linux and other Unixoid operating systems by Ryan C. Gordon . FatELF is implemented as an extension of the ELF binary format. In addition to different CPU architectures with varying data word sizes (e.g. 32-bit or 64-bit systems) or byte order , software platform variations such as different OS ABIs (or versions) can also be supported . According to the developers, this results in the following application scenarios:

  • Linux distributions no longer need to be offered separately for different hardware architectures; the choice of the correct version is sometimes confusing for users. This also reduces the provision and support effort for the distributor.
  • In the operating system directory tree , it can refer to multilib , e.g. For example, the separate lists for /lib, /lib32and /lib64, are omitted.
  • The selection of the correct application file and program library is carried out centrally by the operating system instead of using insecure shell scripts .
  • Should the ELF ABI change, newly created software could continue to run on older systems.
  • It can browser - Plug-ins are delivered, which can run on different platforms.
  • Application files for 64 and 32-bit architectures or for Linux and BSD variations can be combined in a single file.
  • The same installation partition can be used to boot different hardware. A root file system , different kernel and hardware versions are possible.
  • It would significantly simplify the distribution of commercial, precompiled computer games on the Linux platform (cross- distribution ) and allow longer-term use, e.g. B. allow across multiple distribution versions ("upgrades").
  • An application that is provided on a network drive or USB stick can run on a wide variety of systems. This makes portable applications and cloud computing images easier to implement for heterogeneous systems.

A sample implementation for Ubuntu 9.04 is available. An integration into the Linux kernel is still pending.

proof

  1. Universal Binaries and 32-bit / 64-bit PowerPC Binaries. (No longer available online.) Apple Developer Connection on February 4, 2009, archived from the original on July 25, 2008 ; accessed on July 13, 2010 (English).
  2. http://icculus.org/fatelf/
  3. Ryan Gordon: fatelf-specification v1 . icculus.org. Retrieved July 25, 2010.
  4. Ryan Gordon: FatELF: Universal Binaries for Linux. . icculus.org. Retrieved July 13, 2010.
  5. ^ Nicholas Vining: Dear Linux Community: We Need To Talk. ( English ) gaslamp Games. October 13, 2010. Retrieved January 30, 2011.
  6. Dan McKay: Lokigames In Slackware Linux 11.0 ( English ) December 6, 2006. Archived from the original on May 13, 2009. Retrieved on January 30, 2011: " German: Description of the complicated patching techniques for incompatibilities through version updates (" updates ") ) within a distribution "
  7. Eric Windisch: Subject: Newsgroups: gmane.linux.kernel, Re: FatELF patches ... . gmane.org. November 3, 2009. Archived from the original on November 15, 2016. Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. Retrieved July 8, 2010. @1@ 2Template: Webachiv / IABot / article.gmane.org
  8. VM of an Ubuntu 9.04 with "fat binary support"
  9. Ryan Gordon: FatELF: Turns out I liked the uncertainty better. . icculus.org. Retrieved July 13, 2010.
  10. Thom Holwerda: Ryan Gordon Halts FatELF Project . osnews.com. November 3, 2009. Retrieved July 5, 2010.
  11. Joe Brockmeier: SELF: Anatomy of an (alleged) failure . Linux Weekly News. June 23, 2010. Retrieved February 6, 2011.