COMPAT_AOUT(8)          OpenBSD System Manager's Manual         COMPAT_AOUT(8)

NAME
     compat_aout - setup for running a.out OpenBSD binaries on ELF systems

DESCRIPTION
     OpenBSD supports running legacy a.out binaries.  This only applies to
     i386 systems for now.  Most programs should work.

     The a.out compatibility feature is active for kernels compiled with the
     COMPAT_AOUT option and kern.emul.aout sysctl(8) enabled.

     A lot of programs are dynamically linked.  This means that the shared li-
     braries that the programs depend on and the runtime linker are also need-
     ed.  A "shadow root" directory for these files on the OpenBSD system will
     have to be created.  This directory is named /emul/a.out.  Selected file
     operations done by legacy a.out programs run under OpenBSD will look in
     this directory first.

   Setting up shared libraries
     Up until OpenBSD 3.3, programs were using the a.out file format.  When
     migrating to a current ELF system, some old binaries may still be used.
     Before installing a current system, all the necessary shared libraries in
     the /usr/lib, /usr/X11R6/lib, /usr/local/lib and the a.out dynamic linker
     system, namely /usr/libexec/ld.so, /usr/bin/ldd, and /sbin/ldconfig
     should be copied to the corresponding location in the shadow tree.
     (e.g., copy /sbin/ldconfig into /emul/a.out/sbin/ldconfig).  The directo-
     ry /emul/a.out/var/run should also be created.

     Before running a.out binaries, the ld.so cache must be prepared, by run-
     ning /emul/a.out/sbin/ldconfig.

     Once everything is set up properly, a.out programs will look for shared
     libraries under /emul/a.out and ELF programs will not see the a.out
     shared libraries.

OpenBSD 4.7                      May 31, 2007                                1
