Getting Started ---------------------------------------------------------------------------- Binary Compatibility Module (BCM) 7.1.0 for SCO OpenServer The Binary Compatibility Module (BCM) 7.1.0 for SCO® OpenServer® -- OSRcompat.7.1.0 -- enables applications compiled on the UnixWare® 7, release 7.1.0 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 replaces the one that is installed automatically on 5.0.5 systems. Installation Perform the following steps as root: 1. Download the product file from the Download page. 2. Using the uncompress(1) command, extract the installation image: uncompress OSRcompat.7.1.0.pkg.Z 3. Install the BCM: pkgadd -d `pwd`/OSRcompat.7.1.0.pkg Important Notes Binary Compatibility Modules (BCMs) are created in conjunction with SCO Universal Development Kit (UDK) releases. For example, this BCM -- OSRcompat.7.1.0 -- enables applications that were written and compiled with UDK Release 7.1.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. The newer releases of the BCM will work fine on applications built with older releases of the UDK. 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: o The library is identical to the UnixWare 7 library -- such libraries only access services provided on SCO OpenServer and the interface to those services is the same on SCO OpenServer Release 5 as on UnixWare 7. Libraries that go through standard libc interfaces to get system services fall into this category. o The library needs to be implemented differently on the target system than on UnixWare 7. 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: o installs a new version of /usr/lib/libc.so.1 (libc and the dynamic linker) o installs UnixWare 7 shared libraries under /udk/usr/ccs/lib o installs UnixWare 7 UDK tools under /udk/usr/ccs/bin; add this directory to your PATH environment variable 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 5.0.4 or earlier. 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 23 March 1999 © 1999 The Santa Cruz Operation, Inc. All rights reserved.