Binary Compatibility Guide

Incompatible Interfaces

Some system call incompatibilities are not addressed by this package because the calls have become obsolete, because they should not be used by user applications, or because they are included in other independent packages. The following is a detailed list of all such calls:

acct

The Solaris 2.x version of acct is compatible with the Application Binary Interface (ABI) and the System V Interface Definition (SVID); the SunOS 4.x version is not. The differences involve turning accounting off and the format of the accounting record. In the Solaris 2.x release, with accounting already on, a call to acct with a given path name turns accounting off. In the SunOS 4.x release in the same situation, the call will switch only to another accounting file, and will not turn accounting off.

audit, auditon, auditsvc, getauid, setauid, setaudit, setuseraudit

Auditing is not supported by the Binary Compatibility Package or by the base Solaris 2.x environment. Auditing is handled by an independent package in the Solaris 2.x release. The auditing facility provided by that package will not be binary compatible with SunOS 4.x applications.

getdirentries

This call has become obsolete. It is not supported in the Solaris 2.x release or the Binary Compatibility Package.

flock

A version of flock is implemented on top of fcntl(2) locking. It does not provide complete binary compatibility, and the following differences exist between this version and the SunOS 4.x version:

The SunOS 4.x behavior is not available in the default Solaris 2.x release or with this package.

ioctl's

All ioctl's related to filio, sockio, streamio, termio, termios, mtio, and dkio, as well as ioctl's supported by the older version 7 and 4BSD terminal drivers are supported. Otherwise, only the ioctl's pertaining to standard devices of Solaris 2.x platforms are provided. Discrepancies between the ioctl numbers (for the ioctl's supported) in the two versions are handled transparently. The ioctl parameters are mapped whenever necessary.

The following SunOS 4.x ioctl's are incompatible with the Solaris 2.x release:

DKIOCGCONF

This ioctl is not available in this release, but it is supported by the Binary Compatibility Package. This ioctl is replaced by DKIOCINFO, which now includes the combined information of the SunOS 4.x DKIOCGCONF and DKIOCINFO structures.

DKIOCGLOG

This ioctl is not supported in Solaris 2.x. With the Binary Compatibility Package it returns EINVAL.

DKIOCWCHK

In SunOS 4.x this ioctl toggles the write check on the floppy device. With the Binary Compatibility Package, this ioctl does not toggle the write check on the floppy device, but it returns success.

DKIOCSCMD

This ioctl is available only for the xd(7), xy(7), and ipi(7) drives. This ioctl will fail for SCSI devices. Use the USCSI ioctl for these devices.

_O_TIOCCONS

This ioctl is obsolete and is not supported by the Solaris 2.x release or this package.

_O_TIOCGSIZE

This ioctl is obsolete and is not supported by the Solaris 2.x release or this package.

_O_TIOCSSIZE

This ioctl is obsolete and is not supported by the Solaris 2.x release by the Solaris 2.x release or this package.

TIOCMODG

This ioctl is obsolete and is not supported by the Solaris 2.x release or this package.

TIOCMODS

This ioctl is obsolete and is not supported by the Solaris 2.x release or this package.

kill

This Solaris 2.x system call behaves differently from SunOS 4.x. When a -1 is supplied as the first argument, the calling process is also killed; this was not the case in SunOS 4.x.

pipe

The pipe system call in SunOS 4.x opens one descriptor for reading and one for writing. In the Solaris 2.x release it opens both descriptors for reading and writing. Because this difference should affect few if any binaries, no compatibility version has been provided.

ptrace

The optional addr2 argument to the SunOS 4.x ptrace system call is not supported. In addition, the following requests are not supported in the Solaris 2.x release:

PTRACE_ATTACH /* 10, attach to an existing process */

PTRACE_DETACH /* 11, detach from a process */

PTRACE_GETREGS /* 12, get all registers */

PTRACE_SETREGS /* 13, set all registers */

PTRACE_GETFPREGS /* 14, get all floating point regs */

PTRACE_SETFPREGS /* 15, set all floating point regs */

PTRACE_READDATA /* 16, read data segment */

PTRACE_WRITEDATA /* 17, write data segment */

PTRACE_READTEXT /* 18, read text segment */

PTRACE_WRITETEXT /* 19, write text segment */

PTRACE_GETFPAREGS /* 20, get all fpa regs */

PTRACE_SETFPAREGS /* 21, set all fpa regs */

PTRACE_GETWINDOW /* 22, get register window n */

PTRACE_SETWINDOW /* 23, set register window n */

PTRACE_22 /* 22, filler */

PTRACE_23 /* 23, filler */

PTRACE_SYSCALL /* 24, trap next sys call */

PTRACE_DUMPCORE /* 25, dump process core */

PTRACE_SETWRBKPT /* 26, set write breakpoint */

PTRACE_SETACBKPT /* 27, set access breakpoint */

PTRACE_CLRDR7 /* 28, clear debug register 7 */

PTRACE_26 /* 26, filler */

PTRACE_27 /* 27, filler */

PTRACE_28 /* 28, filler */

PTRACE_GETUCODE /* 29, get u.u_code */

swapon

This system call does not exist in the Solaris 2.x release or the Binary Compatibility Package and should not be needed by user applications.

vadvise

This system call does not exist in the default Solaris 2.x release or the Binary Compatibility Package.