|
|
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:
Libraries that go through standard libc interfaces to get system services fall into this category.
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 libsocket.so 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:
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.