diff options
Diffstat (limited to 'static/freebsd/man4/aout.4 3.html')
| -rw-r--r-- | static/freebsd/man4/aout.4 3.html | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/static/freebsd/man4/aout.4 3.html b/static/freebsd/man4/aout.4 3.html new file mode 100644 index 00000000..75f51d33 --- /dev/null +++ b/static/freebsd/man4/aout.4 3.html @@ -0,0 +1,106 @@ +<table class="head"> + <tr> + <td class="head-ltitle">AOUT(4)</td> + <td class="head-vol">Device Drivers Manual</td> + <td class="head-rtitle">AOUT(4)</td> + </tr> +</table> +<div class="manual-text"> +<section class="Sh"> +<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1> +<p class="Pp"><code class="Nm">aout</code> — <span class="Nd">kernel + support for executing binary files in legacy a.out format</span></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1> +<div class="Bd Bd-indent Li"> +<pre>kldload a.out</pre> +</div> +</section> +<section class="Sh"> +<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1> +<p class="Pp">The <a class="Xr">a.out(5)</a> executable format was used before + the release of <span class="Ux">FreeBSD 3.0</span>. Since i386 was the only + supported architecture at that time, <a class="Xr">a.out(5)</a> executables + can only be activated on platforms that support execution of i386 code, such + as i386 and amd64.</p> +<p class="Pp">To add kernel support for old syscalls and old syscall invocation + methods, place the following options in the kernel configuration file:</p> +<div class="Bd Pp Bd-indent"><code class="Cd">options COMPAT_43</code> +<br/> +<code class="Cd">options COMPAT_FREEBSD32</code></div> +<p class="Pp">The <var class="Va">COMPAT_FREEBSD32</var> option is only required + on 64-bit CPU architectures.</p> +<p class="Pp">The <var class="Va">aout.ko</var> module needs to be loaded with + the <a class="Xr">kldload(8)</a> utility in order to support the + <a class="Xr">a.out(5)</a> image activator:</p> +<div class="Bd Pp Bd-indent"><code class="Ic">kldload aout</code></div> +<p class="Pp">Alternatively, to load the module at boot time, place the + following line in <a class="Xr">loader.conf(5)</a>:</p> +<div class="Bd Pp Bd-indent Li"> +<pre>aout_load="YES"</pre> +</div> +<p class="Pp">The <a class="Xr">a.out(5)</a> 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.</p> +<p class="Pp">The following <a class="Xr">sysctl(8)</a> tunables are useful for + this:</p> +<div class="Bd-indent"> +<dl class="Bl-tag"> + <dt id="security.bsd.map_at_zero"><var class="Va">security.bsd.map_at_zero</var></dt> + <dd>Set to 1 to allow mapping of process pages at address 0. Some very old + <var class="Va">ZMAGIC</var> executable images require text mapping at + address 0.</dd> + <dt id="kern.pid_max"><var class="Va">kern.pid_max</var></dt> + <dd>Old versions of <span class="Ux">FreeBSD</span> used signed 16-bit type + for <var class="Vt">pid_t</var>. Current kernels use 32-bit type for + <var class="Vt">pid_t</var>, and allow process id's up to 99999. Such + values cannot be represented by old <var class="Vt">pid_t</var>, mostly + causing issues for processes using <a class="Xr">wait(2)</a> syscalls, for + example shells. Set the sysctl to 30000 to work around the problem.</dd> + <dt id="kern.elf32.read_exec"><var class="Va">kern.elf32.read_exec</var></dt> + <dd>Set to 1 to force any accessible memory mapping performed by 32-bit + process to allow execution, see <a class="Xr">mmap(2)</a>. Old i386 CPUs + did not have a bit in PTE which disallowed execution from the page, so + many old programs did not specify <var class="Va">PROT_EXEC</var> even for + mapping of executable code. The sysctl forces + <var class="Va">PROT_EXEC</var> if mapping has any access allowed at all. + The setting is only needed if the host architecture allows non-executable + mappings.</dd> +</dl> +</div> +</section> +<section class="Sh"> +<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE + ALSO</a></h1> +<p class="Pp"><a class="Xr">execve(2)</a>, <a class="Xr">a.out(5)</a>, + <a class="Xr">elf(5)</a>, <a class="Xr">sysctl(8)</a></p> +</section> +<section class="Sh"> +<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1> +<p class="Pp">The <a class="Xr">a.out(5)</a> executable format was used on + ancient <span class="Ux">AT&T UNIX</span> and served as the main + executable format for <span class="Ux">FreeBSD</span> from the beginning up + to <span class="Ux">FreeBSD 2.2.9</span>. In <span class="Ux">FreeBSD + 3.0</span> it was superseded by <a class="Xr">elf(5)</a>.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1> +<p class="Pp">The <code class="Nm">aout</code> manual page was written by + <span class="An">Konstantin Belousov</span> + <<a class="Mt" href="mailto:kib@FreeBSD.org">kib@FreeBSD.org</a>>.</p> +</section> +<section class="Sh"> +<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1> +<p class="Pp">On 64bit architectures, not all wrappers for older syscalls are + implemented.</p> +</section> +</div> +<table class="foot"> + <tr> + <td class="foot-date">August 14, 2012</td> + <td class="foot-os">FreeBSD 15.0</td> + </tr> +</table> |
