Using the UDK

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. On SCO UnixWare 2.1.X, sockets are implemented on top of streams. Thus, the UnixWare 7 version of installed on SCO OpenServer needs to use socketsys based code; the version delivered for SCO UnixWare 2.1.X needs to use streams.

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. There is much less of this sort of mapping necessary for SCO UnixWare 2.1.X.

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:

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.

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.

Next topic: UnixWare 7 manual pages
Previous topic: Debugger feature unavailable on SCO OpenServer

© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 27 April 2004