Provided by: freebsd-manpages_12.2-1_all bug

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.

Debian                                           August 14, 2012                                         AOUT(4)