Binary Compatibility Guide

Chapter 3 Window System Compatibility

The default window system for the Solaris 2.x release is Open Windows Version 3.3. SunOS 4.x applications are usually based on an earlier version of OpenWindows. This chapter addresses the binary compatibility available for window systems. Binary compatibility limitations discussed in Chapter 2, Binary Compatibility also apply to window-based applications.

OpenWindows Binary Compatibility

Binary Compatibility in the OpenWindows environment varies depending on the protocol or toolkit used. The following sections are standard guidelines for binary compatible OpenWindows applications, and describe the level of binary compatibility available for the X11 protocols and the various toolkits.

OpenWindows Version 2.0 (V2) and OpenWindows Version 3.0 (V3) were available with the SunOS 4.x release. Solaris 2.x contains OpenWindows V3.3 (V3.3) as the default window system. In general, OpenWindows V2 applications that ran on OpenWindows V3 should also run on OpenWindows V3.3. All limitations and problems noted in the following sections apply to OpenWindows V2 applications that are running on OpenWindows V3.3.

Linking OpenWindows Applications

When an application links libraries, all libraries must be dynamically linked.

For example, if libxview is dynamically linked but libolgx is statically linked against OpenWindows V2 libraries, this application will not run on V3. The user will see ld.so error messages similar to:


ld.so: call to undefined procedure _olgx_xxx from 0xf77906ec

If all libraries except libc are dynamically linked against OpenWindows V2, error messages such as the following will be seen:


ld.so: call to undefined procedure _strdup from 0xf778ea30

If an application used and modified OpenWindows V2 XView source and dynamically linked the libraries when the application was built, the application will not run with V3 XView. The modified XView source must be removed.

X11

In OpenWindows V3, the X11 protocol and XLib (the client library) were maintained with 100% backwards compatibility with OpenWindows V2. Both releases support Revision 4 of the X11 MIT protocol. The OpenWindows V3.3 release does contain a large number of bug fixes, however, that make it more protocol reliant than OpenWindows V2 was. If an application relies on an incompatibility with the protocol, it may no longer work.

Unsupported Methods

NeWS

The NeWS protocol is not supported in OpenWindows V3.3.

SunView

The Sunview protocol is not supported in OpenWindows V3.3.

Pixrects

Pixrects are not supported in OpenWindows V3.3.

Toolkits

XView

XView binary compatibility (taking any OpenWindows V2 application dynamically linked against OpenWindows V2 XView, pointing the application towards V3 XView libraries and expecting the application to run) is supported with two possible exceptions:

XView 2.0 contained an interim API to shield clients from changes in the underlying Drag-and-Drop protocol. Applications that used this interface to "receive drops" will be fine when run against OpenWindows V3 libraries. However, if an application attempted to handle the protocol exchange itself, it will need source level changes.

XView applications that use the XVPS are not supported in Solaris 2.x.

OLIT

An OLIT application written to the OpenWindows V2 libraries will run without problems using the OpenWindows V3.3 libraries with one exception: Drag-and-Drop support. An OpenWindows V2 application that attempts to use the Drag-and-Drop facilities in the OpenWindows V3.3 libraries will not succeed: the drop will fail. Cut and paste will work without problems. Due to the changes in the underlying Drag-and-Drop protocol, an application needs source level changes to continue supporting Drag-and-Drop.

TNT and Lite

Applications written using any version of TNT or Lite toolkits are not supported in Solaris 2.x.

DeskSet

The DeskSet applications available with OpenWindows V2 and OpenWindows V3 are still available with OpenWindows V3.3. Running OpenWindows V2 or V3 Deskset applications on Solaris 2.x is not necessary or supported.