Command Section

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
                                      many old programs did not specify
                                      PROT_EXEC even for mapping of executable
                                      code.  The sysctl forces PROT_EXEC if
                                      mapping has any access allowed at all.
                                      The setting is only needed if the host
                                      architecture allows non-executable
                                      mappings.

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 13.1-RELEASE-p6         August 14, 2012        FreeBSD 13.1-RELEASE-p6

Command Section

man2web Home...