HPlogo HP C++ Version A.12.14 Release Notes: For HP-UX 11.x Systems > Chapter 4 Problem Descriptions and Fixes and Known Limitations

Known Limitations

» 

Technical documentation

Complete book in PDF

 » Table of Contents

 » Index

Some of these limitations with possible workarounds are discussed in detail elsewhere in this document. Please be aware that some of these limitations are platform-specific.

For a complete list of known limitations, search for the keyword "limitations" in the HP C++ Online Programmer's Guide.

Trigger Floating Point exceptions before using library routines

Programs that use floating point arithmetic need to trigger Floating Point exceptions before entering a library routine. For example a Floating Point divide should be followed by a Floating Point store, otherwise, code within the library may trigger the floating point exception, interrupting the library code rather than your code.

The reason for this behavior is that in this release, the Unwind component of libcl.a and libcl.sl uses floating point operations in more places than earlier versions of the library. Programs that do not trigger Floating Point exceptions before entering Unwind library routines may have the exception triggered from with the Unwind routine.

The setjmp/longjmp and +eh option

Code compiled in compiler mode with the +eh option should not use setjmp/longjmp. To use setjump/longjmp with +eh in translator mode, replace all setjmp/longjmp calls with Setjmp/Longjmp. You must also must change the #include from <setjmp.h> to <Setjmp.h>.

Kernel threads unsupported

The thread-safe level of the code generated by HP C++ depends on which libC routines are called with the possible exception of static constructors for function scope statics or +eh co de.

Thread-safe levels depends on which particular interface and the type of threads.

Table 4-1 Thread-safe Levels

 

Kernel Threads

User Threads

Generated Code:

Function-scope statics

Thread-Restricted C. User owns local variable.

Thread-Restricted C. User owns the local variable.

File-scope static and globals

Thread-Restricted C for dynamic loading of shared libraries. Ordering of initialization may be
more of a problem.

Thread-Restricted C for dynamic loading of shared libraries. Ordering of initialization may be
more of a problem.

+eh code

Thread-Restricted A.

Thread-Unusable unless other threads are just C.

Thread-Safe Performance
Constrained.

libC interfaces:

+eh ([re]throw)

Thread-Restricted A. Thread-Restricted B if only one thread is written in C++.

Thread-Safe Performance
Constrained.

I/O (iostreams, strstream, etc.)

Thread-Restricted C.

Thread-Safe Performance Constrained. Tuned if using predefined streams: cin, cout, cerr, clog. Otherwise Thread-Restricted C.

vec new/delete

Thread-Restricted C.

Thread-Safe
Performance Constrained.

cxxshl_load and cxxshl_unload

Thread-Restricted C.

Thread-Restricted C.

Others

Probably references no statics/globals so completely safe. libC is not fork-safe. It assumes no cancellations are possible.

Probably references no statics/globals so completely safe. libC is not fork-safe. It assumes no
cancellations are possible.

 

© 1999 Hewlett-Packard Development Company, L.P.