*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->FreeBSD man pages -> i386/svr4 (4)              
Title
Content
Arch
Section
 

SVR4(4)

Contents


NAME    [Toc]    [Back]

     svr4 -- System V Release 4 ABI support

SYNOPSIS    [Toc]    [Back]

     To link System V Release 4 (SVR4) ABI support into the kernel:
     options COMPAT_SVR4

     To load the SVR4 ABI support kernel module:
	   kldload svr4

DESCRIPTION    [Toc]    [Back]

     The svr4 module provides limited System V Release 4 ABI (application
     binary interface) compatibility for userland applications.  The module
     provides the following significant facilities:

     +o	 An image activator for correctly branded elf(5) executable images

     +o	 Special signal handling for activated images

     +o	 SVR4 to native system call translation

     +o	 STREAMS network API emulation (via the streams(4) loadable module, or
	 by means of
	       device streams
	 in a kernel configuration file)

     +o	 Mappings between FreeBSD and SVR4 ioctl(2) calls, or, where no such
	 mappings exist, reverse-engineered implementations of the SVR4 calls.

     It is important to note that the SVR4 ABI support it not provided through
     an emulator.  Rather, a true (albeit limited) "clean room" reverse-engineered
 ABI implementation is provided.

LIMITATIONS    [Toc]    [Back]

     Because the provided ABI has been developed in ignorance of actual SVR4
     source code, there are bound to be unforeseen interactions between SVR4
     client applications and the emulated ABI which cause applications to malfunction.


     Additionally, some SVR4 operating systems do not adhere to the SVR4 ELF
     standard.	In particular, Solaris does not set the ELF interpreter field
     in the ELF header to a value which would allow the kernel to correctly
     identify a client executable as an SVR4 application.  Thus, in certain
     instances it is necessary to use the brandelf(1) utility to explicitly
     brand the executable, or to set the kern.fallback_elf_brand sysctl(8)
     variable to define a "default" ABI for unbranded executables.  Value
     ELFOSABI_SOLARIS represents Solaris; ELFOSABI_SYSV represents other
     SysVR4 operating systems.	See <sys/elf_common.h> for ELFOSABI branding
     definitions, and brandelf(1) for information on branding executables.

     The svr4 module can be linked into the kernel statically with the
     COMPAT_SVR4 kernel configuration option or loaded as required.  The following
 command will load the module if it is neither linked into the kernel
 nor already loaded as a module:

	   if ! kldstat -v | grep -E 'svr4elf' > /dev/null; then
		   kldload svr4 > /dev/null 2>&1
	   fi

     The kernel will check for the presence of the streams(4) module, and load
     it if necessary.

     Note that dynamically linked SVR4 executables will require a suitable
     environment in /compat/svr4.

     For information on loading the svr4 kernel loadable module automatically
     on system startup, see rc.conf(5).  This information applies regardless
     of whether the svr4 module is statically linked into the kernel or loaded
     as a module.

     STREAMS emulation is limited but (largely) functional.  Assuming the
     streams(4) module is loaded, a STREAMS handle can be obtained by opening
     one of the relevant files in /dev or /compat/svr4/dev.  Internally, the
     streams(4) driver produces a socket descriptor and ``tags'' it with additional
 STREAMS state information before returning it to the client application.
  The svr4 environment uses the additional state information to
     recognize and manipulate emulated STREAMS handles when STREAMS-specific
     ioctl(2) calls are executed.

     The subset of STREAMS functionality which is provided is small, probably
     little more than what is required to enable programs on the Solaris CD
     sets to run.

BUGS    [Toc]    [Back]

     Emulation of signal handlers is buggy.

     Emulated connectionless STREAMS fail to receive data from the network in
     some circumstances (but succeed in others -- probably due to particular
     ways of initializing them which the streams(4) module is mishandling, and
     interaction between STREAMS and poll(2)).	Connection-oriented STREAMS
     appear to be functional.

     Ironically, this SVR4 emulator does not (yet) support SVR4 semaphores or
     shared memory.

     ports(7) to automatically create the /compat/svr4 environment do not
     exist.  tar(1) archives containing pre-populated trees can be obtained
     from http://people.FreeBSD.org/~newton/freebsd-svr4/.

     Extensive testing has only really been carried out with Solaris 2.x binaries,
 with anecdotal reports of limited success coming from testers with
     early-revision SCO media.	In theory, the basic SVR4 ABI should be constant
 across the set of vendors who produce SVR4 operating systems, but
     in practice that's probably not the case.	If necessary, future work can
     either implement additional kld(4) modules which produce functionality
     which contains OS-dependent departures from the behaviour which has been
     implemented in this ABI implementation.  Alternatively, sysctl(8) variables
 could set the ``personality'' the environment should present to
     client applications.

FILES    [Toc]    [Back]

     /compat/svr4		       minimal SVR4 run-time environment
     /sys/compat/svr4/syscalls.master  mappings between SVR4 syscalls and svr4
				       module entrypoints.

SEE ALSO    [Toc]    [Back]

      
      
     brandelf(1), streams(4), elf(5)

HISTORY    [Toc]    [Back]

     System V Release 4 ABI support first appeared in FreeBSD 4.0.  The ABI
     was ported from an equivalent facility present in NetBSD 1.3 written by
     Christos Zoulas.


FreeBSD 5.2.1		       October 28, 2003 		 FreeBSD 5.2.1
[ Back ]
 Similar pages
Name OS Title
esplogger IRIX System Support logger
mac_is_present_np FreeBSD report whether the running system has MAC support
streams FreeBSD System V STREAMS networking ABI support
cvs NetBSD Concurrent Versions System support files
cvs Linux Concurrent Versions System support files
cvs OpenBSD Concurrent Versions System support files
cvs FreeBSD Concurrent Versions System support files
routing HP-UX system support for local network packet routing
auto_parms HP-UX initial system configuration plus DHCP support command
bus_release_resource FreeBSD release resources on a bus
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service