Getting Started


Binary Compatibility Module (BCM) for SCO OpenServer

The Binary Compatibility Module (BCM) for SCO® OpenServer® -- OSRcompat -- enables applications compiled on the UnixWare® 7 Universal Development Kit (UDK) to be run on SCO OpenServer systems.

System Requirements

Software: SCO OpenServer Release 5.0.0, 5.0.2, 5.0.4, or 5.0.5*
RAM: N/A
Disk Space: 20MB

* This BCM is installed automatically on SCO OpenServer Release 5.0.5 systems.

Installation

Perform the following steps as root:

  1. Download the product file from the Download page.

  2. Move the file to a preferred installation directory:
    mv C0*.tar /tmp1

  3. Change to the installation directory:
    cd /tmp1

  4. Using the tar(1) and uncompress(1) commands, extract the installation images:
    tar xvf C0*.tar

    uncompress OSRcompat.pkg.Z

  5. Install the BCM:
    pkgadd -d `pwd`/OSRcompat.pkg

Important Notes

Binary Compatibility Modules (BCMs) are created in conjunction with SCO Universal Development Kit (UDK) releases. For example, this BCM -- OSRcompat700 -- enables applications that were written and compiled with UDK Release 7.0.0. If you purchase an application that was compiled with a later UDK release, you must upgrade your BCM; consult your application vendor for BCM requirements.

For technical details about the contents of this BCM, see ``How the BCM works on SCO OpenServer''.

For more information about the UDK, see the UDK documentation set on the SCO documentation server; click on Software Development.

Product Updates

The latest BCM releases for your platform will be available at this download site.

How the BCM works on SCO OpenServer

The SCO OpenServer Release 5 compatibility module works by installing UnixWare 7 versions of the shared libraries loaded by an application on SCO OpenServer, as well as installing the UDK tools.

The UnixWare 7 versions are installed in an alternate directory tree (/udk).

The BCM installs two types of libraries on SCO OpenServer:

An example of the second type of library is libsocket. On SCO OpenServer, sockets are created and manipulated through the socketsys system call. Another example is the UnixWare 7 libc for SCO OpenServer, which maps UnixWare 7 system call numbers to the values expected by the SCO OpenServer kernel, and maps error numbers returned by the SCO OpenServer kernel to the values expected by UnixWare 7 applications. It also maps certain data structures and constants that are different on the two platforms.

Besides shared libraries, certain other files need to be part of the BCM. Such files would be any file that is part of the system and is visible to a running application. This includes, for example, locale files, configuration files, other data files like bitmaps, etc.

Once installed, the SCO OpenServer BCM:

When a binary is run, the new dynamic linker:

  1. detects whether the executable file was generated by the SCO OpenServer compiler or the UDK compiler

  2. if the file was generated by an SCO OpenServer compiler, it is executed as it normally would be on SCO OpenServer (see ``Marking an ELF binary'').

  3. if the file was generated by the UDK compiler, the dynamic linker maps in the UnixWare 7 dynamic linker and passes it control

  4. the UnixWare 7 dynamic linker:

    • looks for all shared libraries to be loaded by the process under /udk, before looking in the places specified by its normal path searching rules

    • maps UnixWare 7 system constants to values expected on the target system

    • maps error numbers returned by the target system to UnixWare 7 values

    • maps system data types and detects overflows

Marking an ELF binary

NOTE: Some existing SCO OpenServer ELF binaries built with third-party compilers may not run after installing this package on SCO OpenServer. That is because they do not contain the special mark denoting an SCO OpenServer ELF binary.

This mark is created by the SCO OpenServer C compiler, icc, and most versions of gcc that generate SCO OpenServer ELF binaries.

For SCO OpenServer 5.0.4, this problem has been resolved with the Support Level Supplement (SLS) oss472, Binary Misrecognition Patch, available at the SCO ftp site. For earlier releases, follow the procedure described here; the SLS is not required for SCO OpenServer Release 5.0.5.

The mark consists of a special segment of type NOTE. If an SCO OpenServer binary does not run after installing this package, you can determine whether it is missing the special mark by running the dump command:

dump -ov file

You should see an entry denoted as type "NOTE".

If this entry is missing, you may run the command elfmark(1) to mark the file as an SCO OpenServer binary:

/udk/usr/ccs/lib/elfmark -t osr5 file

Note that the mark inserted by elfmark is different from the mark created by the standard compilers.


Document version 700b
19 January 1999
© 1999 The Santa Cruz Operation, Inc. All rights reserved.