| United States-English |
|
|
|
![]() |
Release Notes for HP-UX 11.0: HP 9000 Computers > Chapter 3 CompatibilityCompatibility Statement for HP-UX 11.0 |
|
Hewlett-Packard has a long record of providing HP-UX compatibility. This feature protects your investment and allows you to easily upgrade your systems. HP has always recognized that HP-UX compatibility is an important feature that HP customers demand. Compatibility requirements span across HP-UX products to third party products as well. All third party products (and products the third party products call) are equally important components in the complete customer environment. Customer solutions often have complex, multiple chains of dependent applications spanning the entire range of HP-UX products as well as third party products. One broken link in the chain of dependencies may result in an application that no longer works. The unbroken string of compatibility support on HP-UX is one of the biggest and best benefits provided by HP. HP-UX supports forward compatibility from pre-11.0 to 11.0. This chapter will describe what this means for executable applications, object files, source files, data, and libraries, and will also discuss compatibility exceptions. HP-UX supports the following types of compatibility in HP-UX 11.0:
An application that ran on an HP-UX 10.x release will generally continue to run with the same behavior on 32-bit and 64-bit HP-UX 11.0 provided that any dependent shared libraries are also present. An executable is a binary file that has been processed by the HP link editor with ld or indirectly with the compiler, and can be run by the HP-UX loader (exec). 32-bit software that compiled on an HP-UX 10.x release can be recompiled without change on HP-UX 11.0. The term "source" includes input source to compilers, scripts, and makefiles. A 32-bit application can continue to access persistent data files, such as system files, backup/recovery formats, and HP-documented data formats via supported APIs in the same manner as the previous release. A 64-bit application can access the same data in the same manner as a 32-bit application. For example, if you access the password file information via getpwent() rather than directly reading the file, your application will maintain data compatibility. Customized configurations and data from HP-UX 10.x are preserved upon installation/upgrade to 32-bit or 64-bit HP-UX 11.0. A relocatable object can be a file (.o), shared library (.sl), or an archive library (.a). Several types of object binary compatibility are included here:
For detailed information see the following two documents:
HP-UX 11.0 provides compatibility for the great majority of applications that compile and run on HP-UX 10.x releases. Most applications will be source compatible for both 32-bit and 64-bit HP-UX 11.0. For binary compatibility, most 32-bit applications will run on 32-bit HP-UX 11.0. 32-bit applications will also run on 64-bit HP-UX 11.0, with a few exceptions.
To determine if a specific 32-bit application is binary compatible on a 64-bit operating system, you can do the following:
If you are transitioning a 9.x application to 11.0, you DO NOT need to transition your 9.x application to 10.x and test it on 10.x prior to transitioning it to 11.0. You should transition your application directly to 11.0. Note that your application will be affected by any compatibility issues that occurred in 9.x and 10.x, as compatibility issues are generally cumulative. One issue that may impact your 9.x application is the 10.x file system layout. Please refer to the 10.x Release Notes for further details on this issue. In general, compatibility is supported where the application is well-behaved and follows good programming practices. Good programming practices include using only documented Application Programming Interfaces (APIs), including the required header files, avoiding architecture-specific knowledge, and avoiding APIs that have portability and compatibility issues. Changes to the syntax or semantics of APIs are avoided where possible. Unfortunately, compatibility is sometimes compromised in order to comply with new standards, add new features, and enhance performance. In most cases, these changes can be implemented in a way that maintains compatibility. In extreme cases, changes are mandated by a standard that compromises compatibility. Compatibility can also be affected by the compatibility support of end-user or Independent Software Vendor (ISV) products, such as third party compiler products. HP can influence the compatibility of the products that HP provides, but has no control over the compatibility support of others products. APIs can be removed from HP-UX after adhering to a recommended phased obsolescence plan. Interfaces that are to be obsoleted are clearly identified in HP documentation at least one release prior to obsolescence. Applications that use these obsoleted interfaces may not run after support has been discontinued or removed. Be aware of the type of libraries (shared or archive) linked to an application. The way in which the libraries are linked can affect binary compatibility. The application should not be linked with shared libraries that have dependencies on archive HP-UX system libraries. Instead, the application should use the shared versions of these libraries where they exist. See "Coding Practices that Impact Compatibility" below for more information. Library providers cannot include HP-supplied libraries inside their own library. Applications and libraries cannot explicitly load HP-supplied shared libraries with shl_*() APIs. Lastly, applications do not need to include -lc on the C compile line. The C compiler driver automatically includes the C library during the link phase. Shared libraries must not establish explicit dependencies with libc via -lc. In general, usage of new release features will minimally require a recompile and perhaps source code changes. For example, you will need to recode and recompile to take advantage of 11.0 kernel threads. In order to take advantage of 64-bit large address space and large memory in 11.0, an application must minimally recompile, make makefile changes, and may require source code changes to remove 32-bit limitations from the code. See the HP-UX 11.0 Software Transition Kit or HP-UX 64-bit Porting and Transition Guide for more information. (See /opt/ansic/newconfig/RelNotes/64bitTrans.bk.ps, /opt/aCC/newconfig/TechDocs/64bitTrans.bk.ps, or the Instant Information CD-ROM.) Applications wanting to take advantage of kernel threads will also need to make source and makefile changes. There are a few compatibility exceptions in 11.0; most of these exceptions are primarily corner cases with a small impact. Here are some highlights that can be readily detected in C/C++ sources with the HP-UX 11.0 Software Transition Kit source scanner tools. For the complete list and further details on specific exceptions, see the impacts found by the HP-UX 11.0 STK source scanner. See “Transition Tools” in Chapter 2 for more information.
The following types of objects cannot be combined in one executable:
|
|||||||||||||||||||||||||||||||||||||
|
|||||||||||||||