 |
» |
|
|
 |
|  |  |
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. Incorrect Links in the HP
aC++ Online Programmer's Guide |  |
The version of the guide provided with HP aC++ (not the web
version available from http://docs.hp.com/hpux/development) contains
incorrect links to the Rogue Wave Software Standard C++
Library 1.2.1 Class Reference and to the Rogue
Wave Software Tools.h++ 7.0.6 Class Reference. To correct the links, edit the /opt/aCC/html/C/guide/index.htm
file. Change the links to the above documents to the following: /opt/aCC/html/libstd/ref.htm |
/opt/aCC/html/librwtool/ref.htm |
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
is changing 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 9806 EXTPAK
and HP-UX 11.00 |  |
 |  |  |  |  | NOTE: "HP-UX 11.00 9806 EXTPAK" refers to
the HP-UX 11.0 Extension Pack, June 1998. |  |  |  |  |
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 9806 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 9806 EXTPAK releases. These conditions can
occur during your development process, but rarely affect deployed
applications. Binary Incompatibilities without ChangesUnder 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. Binary Incompatibilies with ChangesWhen you make changes to your source code, options, or makefiles
to use new features of the 9806 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 9806 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 9806 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 9806 EXTPAK compiler
using +Olibcalls and +DO11.0EP9806
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
9806 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 9806
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 9806 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.
|