Getting Started


UDK Compatibility Modules for SCO OpenServer

UDK Compatibility Modules (also known as Binary Compatibility Modules or BCMs) for SCO® OpenServer® enable applications compiled on UnixWare® 7 development environments to be run on SCO OpenServer systems.

Compatibility modules are created in conjunction with SCO UnixWare/OpenServer Development Kit (UDK) releases. For example, OSRcompat.700 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 compatibility module; consult your application vendor for compatibility module requirements.

In general, the latest release of the OSRcompat module is usually the best one to use for your platform. However, certain applications will require a specific module, so be sure to check the system requirements for your application.

For technical details about the contents of this compatibility module, 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.

System Requirements

Software: OSRcompat.700 for SCO OpenServer Release 5.0.0 , 5.0.2, 5.0.4 or 5.0.5
OSRcompat.710 for SCO OpenServer Release 5.0.2, 5.0.4 or 5.0.5
OSRcompat.711 for SCO OpenServer Release 5.0.2, 5.0.4 or 5.0.5
RAM: N/A
Disk Space: 10MB

* OSRcompat.700 is installed automatically on SCO OpenServer Release 5.0.5 systems.

Installation


NOTE: You must remove any previous OSRcompat module from your SCO OpenServer system before installing a newer version. To remove the older version, enter:

pkgrm OSRcompat.version_string_if_any


Perform the following steps as root:

  1. Download the product tar files from the Download page.

  2. Move the file to a preferred installation directory:
    mv filename*.tar /tmp

  3. Change to the installation directory:
    cd /tmp

  4. Using the tar(1) command, extract the installation images:
    tar xvf filename.tar

  5. Uncompress the files:
    uncompress *.Z

  6. Install the compatibility module:
    pkgadd -d `pwd`/OSRcompat.version_string.pkg

Product Updates

The latest compatibility module release for your platform is 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 710a
19 March 1999
© 1999 The Santa Cruz Operation, Inc. All rights reserved.