FreeBSD manual
download PDF document: aout.4.pdf
AOUT(4) FreeBSD Kernel Interfaces Manual AOUT(4)
NAME
aout - kernel support for executing binary files in legacy a.out format
SYNOPSIS
kldload a.out
DESCRIPTION
The a.out(5) executable format was used before the release of
FreeBSD 3.0. Since i386 was the only supported architecture at that
time, a.out(5) executables can only be activated on platforms that
support execution of i386 code, such as i386 and amd64.
To add kernel support for old syscalls and old syscall invocation
methods, place the following options in the kernel configuration file:
options COMPAT_43
options COMPAT_FREEBSD32
The COMPAT_FREEBSD32 option is only required on 64-bit CPU architectures.
The aout.ko module needs to be loaded with the kldload(8) utility in
order to support the a.out(5) image activator:
kldload aout
Alternatively, to load the module at boot time, place the following line
in loader.conf(5):
aout_load="YES"
The a.out(5) format was mainstream quite a long time ago. Reasonable
default settings and security requirements of modern operating systems
today contradict the default environment of that time and require
adjustments of the system to mimic natural environment for old binaries.
The following sysctl(8) tunables are useful for this:
security.bsd.map_at_zero Set to 1 to allow mapping of process
pages at address 0. Some very old
ZMAGIC executable images require text
mapping at address 0.
kern.pid_max Old versions of FreeBSD used signed
16-bit type for pid_t. Current kernels
use 32-bit type for pid_t, and allow
process id's up to 99999. Such values
cannot be represented by old pid_t,
mostly causing issues for processes
using wait(2) syscalls, for example
shells. Set the sysctl to 30000 to work
around the problem.
kern.elf32.read_exec Set to 1 to force any accessible memory
mapping performed by 32-bit process to
allow execution, see mmap(2). Old i386
CPUs did not have a bit in PTE which
disallowed execution from the page, so
SEE ALSO
execve(2), a.out(5), elf(5), sysctl(8)
HISTORY
The a.out(5) executable format was used on ancient AT&T UNIX and served
as the main executable format for FreeBSD from the beginning up to
FreeBSD 2.2.9. In FreeBSD 3.0 it was superseded by elf(5).
AUTHORS
The aout manual page was written by Konstantin Belousov
<kib@FreeBSD.org>.
BUGS
On 64bit architectures, not all wrappers for older syscalls are
implemented.
FreeBSD 14.2-RELEASE August 14, 2012 FreeBSD 14.2-RELEASE