ptx/C++ V5.2.2 is a DYNIX/ptx® port of the EPC C++ V5.2.2 compiler from Edinburgh Portable Compilers. This product also includes Rogue Wave® Tools.h++® V7 and V8 Class Library and C++ Standard Libraries. ptx/C++ V5.2.2 runs on DYNIX/ptx V4.4.x. Read these release notes before you install or run this release of ptx/C++.
Support for the long long data type.
The c++ compiler and libraries are closer to the ANSI standard.
Support for Tools.h++ Version 7 (cfront compatible) and Version 8 (ANSI compatible).
Shared libraries are now available as a separately installed product, ptx/C++ Runtime V5.2.2.
The Standard C++ Library from RogueWave is Version 2.
The edb debugger is now automatically installed as part of the DYNIX/ptx operating system.
For a detailed list of changes, refer to "Major Changes for Release V5.2" in Chapter 6 of the ptx/C++ User's Guide.
This release of ptx/C++ V5.2.2 runs on DYNIX/ptx V4.4.x or later, starting with V4.4.2.
The following list describes the differences between EPC C++ V5.2 from Edinburgh Portable Compiler, and ptx/C++ V5.2:
The executable name for ptx/C++ is c++ and is in the directory /bin.
The man page for ptx/C++ is called c++.
The location of the files for ptx/C++ is /opt/ptxC++.
This section contains information about the differences between ptx/C++ V5.2.x and ptx/C++ V2.1.3. Additional information is provided in the section "Migrating to ANSI/ISO C++" in the ptx/C++ User's Guide.
Object files and libraries are not compatible between ptx/C++ V2.1.3 and ptx/C++ V5.2.x.
By default ptx/C++ V5.2.x implements the long double data type the same as the double data type, with a length of 8 bytes. This is compatible with ptx/C++ V2.1.3 and with ptx/C. ptx/C++ V5.2.x provides an option, -abilngdbl, to follow the IntelTM 386 Application Binary Interface and implement the long double data type with a length of 12 bytes. Applications that are written partly in C and partly in C++ should use the default 8-byte long double if they share long double data through global variables, function calls, or data written to binary files.
The ptx/C++ V2.1.3 processor defines __STDC__ to be zero, but ptx/C++ V5.2.x defines it to be one. The ptx/C compiler continues to define __STDC__ to be zero except when you specify the -Xc option, which defines __STRICT_ANSI__.
ptx/C++ V5.2.x does not provide a COFF development environment.
ptx/C++ V5.2.x does not support the ptx/C feature -Wc,+dir, which can be used to select a version of the socket implementation to use for an application. Where -Wc,+abi-socket would be passed to cc, use -@/usr/lib/abi-socket/cc_options as an option to c++.
ptx/C++ V5.2.x does not support __asm macros (also known as asm functions).
ptx/C++ V5.2.x does not support generating line coverage data for use with lprof(1).
ptx/C++ V5.2.x does not support ordering for locality (OFL).
ptx/C++ V5.2.x does not support the placement of variables in shared or private memory for use with the parallel programming library, libpps.
The following list describes compatibility information and issues when running different versions of ptx/C++ across different versions of DYNIX/ptx:
Static executables built on DYNIX/ptx V4.4 with ptx/C++ V5.0 or V5.2 can be run on DYNIX/ptx V4.5 or DYNIX/ptx V4.6.
Dynamic executables using shared C++ libraries built on DYNIX/ptx V4.4 with ptx/C++ V5.0 cannot be run on DYNIX/ptx V4.5 or DYNIX/ptx V4.6. The shared C++ libraries that were part of the ptx/C++ V5.0 releases are not supported as part of ptx/C++ V5.2 or ptx/C++ V5.2 Runtime.
The shared C++ libraries that are part of ptx/C++ Runtime V5.2.x will continue to be supported in future releases of ptx/C++ Runtime. This will allow dynamic executables that are built with ptx/C++ V5.2.x to be executed on the same or later versions of DYNIX/ptx on which the same or a later version of ptx/C++ Runtime is installed.
It is possible for object files (.o, .a, and .so) built with one version of ptx/C++ for a particular version of DYNIX/ptx to be used with another version of ptx/C++ and/or DYNIX/ptx. This will depend on the versions of the compiler and operating system, as well as the compilation mode. These factors all determine which set of C++ libraries will be used. The following table shows which combinations are supported and which are not.
ANSI and cfront modes are not compatible.
ANSI mode for ptx/C++ V5.2 is not compatible with ANSI mode for ptx/C++ V5.0.
Compiling object files with one version of ptx/C++ and linking those object files with an earlier version of ptx/C++ is not supported. For example, compiling with ptx/C++ V5.2 and linking with ptx/C++ V5.0 is not supported.
Compiling object files on one version of DYNIX/ptx and linking those object files when running on an earlier version of DYNIX/ptx is not supported. For example, compiling on DYNIX/ptx V4.6 and linking when running on DYNIX/ptx V4.5 is not supported.
Compiling object files on DYNIX/ptx V4.4 for use with ANSI libraries and linking those object files when running on a version of DYNIX/ptx that supports threads (DYNIX/ptx V4.5 and V4.6) is not supported.
To install ptx/C++ V5.2.2 on DYNIX/ptx V4.4, refer to the appropriate version of the DYNIX/ptx and Layered Products Software Installation Release Notes.
ATTENTION The ptx/C++ shared libraries are in a separately installed product called ptx/C++ Runtime V5.2.2. For this reason, development environments require both ptx/C++ and ptx/C++ Runtime. A license is not required to install ptx/C++ Runtime.
Also, the edb debugger is now installed as part of the DYNIX/ptx operating system. Release note information for edb is included in the applicable versions of the DYNIX/ptx V4.4.x Release Notes, starting with DYNIX/ptx V4.4.8.
The System V Application Binary Interface (ABI), Intel386 Architecture Processor Supplement, states that 64-bit floating point precision is the default state required for conformance to the ANSI C standard and to the IEEE 754 Floating-point standard. Furthermore, many floating-point routines may produce undefined behavior if the precision control is set to less than 53 bits. For these reasons, the c++ compiler in ptx/C++ assumes that floating-point precision is 64 bits.
If an application changes the floating point precision to 53 bits, this can cause C++ long long calculations to get the wrong results, since some of these calculations are done using floating point registers. In this scenario, the application must change the floating point precision back to 64 bits before doing long long arithmetic.
The following documentation is available on the Software Documentation CD in HTML format:
ptx/C++ User's Guide
edb Reference Manual
ATTENTION The ptx/C++ User's Guide and edb Reference Manual contain information about thread support, which is only available in DYNIX/ptx V4.5.x and V4.6.x.
The Rogue Wave class library Tools.h++ is incorporated as an integral part of the ptx/C++ language implementation by permission of Rogue Wave Software Inc. The Tools.h++ Version 8 documentation is included in the /opt/ptxC++/doc directory as two online manuals in HTML format:
Tools.h++ Version 8 Reference, /opt/ptxC++/doc/tlsref/index.htm
Tools.h++ Version 8 User's Guide, /opt/ptxC++/doc/tlsug/index.htm
Tools.h++ Version 8 is available for use with ANSI compilation. Tools.h++ Version 7 is available for use with cfront compilation. The documentation for Version 7 is available in hard copy format.
ATTENTION There is no shared library version of RogueWave Tools.h++ Version 8.
The Standard C++ Library is also part of ptx/C++ and is implemented by Rogue Wave Software Inc. Documentation for this library is included in the /opt/ptxC++/doc directory in HTML format:
Standard C++ Library Class Reference, /opt/ptxC++/doc/stdref/index.htm
Standard C++ Library User's Guide, /opt/ptxC++/doc/stdug/index.htm
The following list contains the problem reports fixed in ptx/C++ V5.2.2. The first number shown in bold font is the SPTS problem report number. The second number shown in brackets is the EPC problem report number.
The following list contains the open problem reports in ptx/C++ V5.2.2. The first number shown in parentheses is the SPTS problem report number. The second number shown in brackets is the EPC problem report number.
The ptx/C++ compiler supports two forms of long double. The default is 8 bytes, the same as double, and matches the long double data type supported by the ptx/C compiler and by libc functions. An alternate form is 12 bytes, as required by the System V ABI for Intel processors, and is specified by the c++ option -abilngdbl. edb cannot tell the difference between the two and supports only the 8-byte form. Printing a long double value will show only 8 bytes, and using the exec command to assign a new value will store only 8 bytes. We do not expect edb to ever support 12-byte long doubles.
Workaround: None.