Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP aC++ Version A.03.13 Release Notes: HP Series 9000 > Chapter 4 Problem Descriptions and Fixes and Known Limitations

Known Problems

» 

Technical documentation

Complete book in PDF
» Feedback
Content starts here

 » Table of Contents

Customers on support can use the product number to assist them in finding SSB and SRB reports for HP aC++. The product number you can search for is B3910BA.

To verify the product number and version for your HP aC++ compiler, execute the following HP-UX commands:

what /opt/aCC/lbin/ctcom

what /opt/aCC/bin/aCC

Following are known problems and workarounds.

Changes to the math.h System Header File

At the HP-UX 11.00 release, the math.h header file has changed in the following ways:

  • fmax and fmin are new functions. If you used these function names in your code in a prior release and want to continue using them, you must rename your functions. If this is a problem in your code, you will see an error like the following:

    the overloading mechanism cannot tell a double (double, double) 
    from a ... (1103)
  • The _ABS function has been renamed. To continue using this function, replace any call to _ABS() with abs().

Unsatisfied Symbols if Using Non-current Support Library

If you see a message like the following, you may be using a non-current version of the HP aC++ run-time support library.

/opt/aCC/lbin/ld: Unsatisfied symbols:
Class tables [Vtable] dependent on key function:
"__versioned_type_info::~__versioned_type_info()" (data)

For example, if you are a library distributor, you must ensure that your customers use the same or a newer version of the libCsup run-time library as you. If necessary, you should install the most current HP aC++ library support patch and distribute this patch to your customers.

Unsatisfied Symbols for Inline Template Functions

If you use explicit instantiation instead of closing a library, and you compile with the +inst_auto option, then unless you compile with the +inst_none option, unsatisfied symbols will be generated for inline template functions that are too large to inline.

Potential Binary Incompatibility of Objects Built with HP-UX 10.10, 10.20 HP aC++

The underlying type corresponding to the "size_t" typedef has changed from unsigned int to unsigned long. Similarly, "ptrdiff_t " has changed from int to long. These changes make the 10.10, 10.20 HP aC++ runtime libraries incompatible with subsequent compiler releases. The changes will cause compatibility problems when size_t is used in a non-extern "C" interface. (The mangled signature would be different.)

Due to these changes, if any object files are recompiled or linked, then all HP aC++ files must be recompiled. This implies that third party libraries in archive form also need to be recompiled or resupplied.

Potential Source Incompatibility of Objects built with HP-UX 10.10, 10.20 HP aC++

When your code overloads system header file functions, it is possible that C++ source files that compile without error using HP aC++ for HP-UX 10.10 or 10.20 might not compile with a subsequent compiler release. The example below shows why this potential problem exists.

1: #include <time.h>
2: time_t ff (time_t t) { return t; }
3: time_t ff (long t) { return t; } // This causes a duplicate.
4: time_t ff (char t) { return t; } // This causes an ambiguity.
5: int main () { long tt = ff (1L); return 0; }

ff is overloaded to take either a time_t, long, or char parameter. On a 10.10 or 10.20 system where time_t is a long, the call to ff in main resolves to ff(time_t). On a 10.30 system, however, where time_t is an int, the code fails to compile:

Error 225: "t1.C", line 4 # Ambiguous overloaded function call; more than one acceptable function found. Two such functions that matched were "int ff(char)" ["t1.C", line 5] and "int ff(int)" ["t1.C", line 3]. int main () { long tt = ff (1L); }
^^

Binary Compatibility Between HP-UX 11.00 9812 EXTPAK and HP-UX 11.00

An application that ran on the HP-UX 11.00 release will generally continue to run with the same behavior on 32-bit and 64-bit HP-UX 11.00 9812 EXTPAK provided that any dependent shared libraries are also present. An executable is a binary file that has been processed by the HP linker with ld or indirectly with the compiler, and can be run by the HP-UX loader(exec).

The following items describe exceptions to binary compatibility between the 11.00 and 9812 EXTPAK releases. These conditions can occur during your development process, but rarely affect deployed applications.

Binary Incompatibilities without Changes

Under the following conditions, when you compile your source code without any changes (to source code, options, or makefiles), you create relocatable object files or executables that cannot be moved back to an 11.00 system.

  • Instrumented code with PBO or +O4 optimization

    If you use PBO (+I compiler option) or the +O4 option during development and recompile with your 9812 EXTPAK compiler, you create instrumented objects (ISOM) that an 11.00 system does not recognize.

    You receive one of the following types of error messages if you attempt to link the objects created using your 9812 EXTPAK compiler on an 11.00 system.Example 1: If you compile with +O3 or +O4, you receive the following message and a stack trace:

    report error(13-12299-434) to your nearest HP service representative (8911)

    Example 2: If you compile with "+O2 +I", you receive the following message and a stack trace:

    Backend Assert ** Ucode versions earlier then v.4 no longer supported. (5172)

    NOTE: This code is not backward-compatible with the 11.00 release. Instrumented object files cannot be moved backward.

Binary Incompatibilies with Changes

When you make changes to your source code, options, or makefiles to use new features of the 9812 EXTPAK release, you may introduce the following areas of binary incompatibility. You can apply patches to the 11.00 release to accommodate the relocatable object file or executable on an 11.00 release for backward compatibility.

  • Huge Data Features

    If you make changes to your source code or use the +hugesize=noption and recompile with your 9812 EXTPAK compiler to use huge data features (for example, declaring a very large array), you must install the PHKL_14088 (9804 EXTPAK) kernel patch (or superseding patch) to use your executable with these features on an 11.00 system. You must also apply the PHSS_14577 aC++ runtime and PHSS_14580 linker-tools patches for huge data support.

  • 64-bit Open Graphics Library Support

    The 9812 EXTPAK extension provides 64-bit OGL support to improve performance. If you make changes to your source code to recompile using these OGL headers, you receive the message "unresolved symbols" when you link your executable on an 11.00 system.

  • Compiling with +DO and +Olibcalls for Improved Math Performance

    If you recompile your code with your 9812 EXTPAK compiler using +Olibcalls and +DO11.0EP9812 options for improved performance, you may receive the message "unresolved symbols" if you link or run your new executable on an 11.00 system. (Possible symbols include: $$vsin2_20, $$vcos2_20, $$vsinf2_20, $$vcosf2_20, $$vcossinf_20, $$vcossin_20, $$expf_20, $$expf, $$vexpf2_20, $$vexp2_20.) Install the PHSS_14582 milli (or superseding) patch if you must link your executable on an 11.00 system.

  • Parallel Programming Enhancements

    If you change your source code and recompile it with your 9812 EXTPAK compiler to take advantage of parallel programming features, you receive the error "unresolved symbols" if you link your executable on an 11.00 system. Install the PHSS-14577 aC++ runtime patch, PHSS-14580 linker-tools patch, and EXTPAK 9812 driver to provide the correct driver and support library for an 11.00 system.

  • CXperf Profiling Tools

    If you change options and recompile your source code with your 9812 EXTPAK compiler using the CXperf product, you do not produce profiling information if you run your executable on an 11.00 system. Install the PHSS_14580 linker-tools patch and the CXperf product if you must use the CXperf product on an 11.0 system.

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1999 Hewlett-Packard Development Company, L.P.