DEC C CXXAE02062 Compaq C++ V6.2 for OpenVMS Alpha ECO Summary
TITLE: DEC C CXXAE02062 Compaq C++ V6.2 for OpenVMS Alpha ECO Summary
Modification Date: 12-OCT-2000
Modification Type: Updated Kit: Supersedes CXXAE01062
NOTE: An OpenVMS saveset or PCSI installation file is stored
on the Internet in a self-expanding compressed file.
For OpenVMS savesets, the name of the compressed saveset
file will be kit_name.a-dcx_vaxexe for OpenVMS VAX or
kit_name.a-dcx_axpexe for OpenVMS Alpha. Once the OpenVMS
saveset is copied to your system, expand the compressed
saveset by typing RUN kitname.dcx_vaxexe or kitname.dcx_alpexe.
For PCSI files, once the PCSI file is copied to your system,
rename the PCSI file to kitname-dcx_axpexe.pcsi, then it can
be expanded by typing RUN kitname-dcx_axpexe.pcsi. The resultant
file will be the PCSI installation file which can be used to install
the ECO.
Copyright (c) Compaq Computer Corporation 2000. All rights reserved.
PRODUCT: Compaq C++ V6.2 for OpenVMS Alpha
OP/SYS: OpenVMS Alpha
COMPONENT: CXX$COMPILER
CXX$DEMANGLE
CXX$LINK
CXX$COMPILER_MSG
CXX$LINK_MSG
LIBCXXSTD.OLB
SOURCE: Compaq Computer Corporation
ECO INFORMATION:
ECO Kit Name: CXXAE02062
ECO Kits Superseded by This ECO Kit: CXXAE01062
ECO Kit Approximate Size: 37,926 Blocks
Kit Applies To: Compaq C++ V6.2 for OpenVMS Alpha
OpenVMS Alpha V6.2 through V7.2-1
System/Cluster Reboot Necessary: No
Rolling Re-boot Supported: Information Not Available
Installation Rating: INSTALL_3
3 - To be installed on all systems running
the listed versions of OpenVMS which
are experiencing the problems described.
Kit Dependencies:
The following remedial kit(s) must be installed BEFORE
installation of this kit:
None
In order to receive all the corrections listed in this
kit, the following remedial kits should also be installed:
None
ECO KIT SUMMARY:
An ECO kit exists for Compaq C++ V6.2 for OpenVMS Alpha on OpenVMS
Alpha V6.2 through V7.2-1. This kit addresses the following problems:
Problems Addressed in CXXAE02062:
Kit Installation Script
o The Compaq C++ kit installation procedure no longer
overwrites Compaq C header files if those on the system
were created later than those on the kit.
o The Compaq C header files (decc$rtldef.tlb) has been
updated on this kit. These new headers define functionality
which has been added to recent versions of OpenVMS as well
as fix problems which were reported.
o The installation of the Compaq C components have been
removed from the CCXX$STARTUP.COM command procedure. A
comment was placed in the command procedure telling people
of this change and referring them to the DECC$STARTUP.COM
procedure.
Compiler
o Attempts to restore pointer size using a pragma which
differs from the pragma used to save the pointer size
will now result in a diagnostic. Prior to this change,
the compiler would take a memory access violation.
o When one attempts to compile code which includes an
explicit reference to an implicitly declared special member
function, the compiler complains 'class "A" has no member
"operator="'. The standard clearly states that all classes
have copy assignment operators, so the compiler now creates
an implicit declaration for the copy assignment operator if
no user-declared copy assignment operator exists.
o The compiler was incorrectly generating diagnostics for
unreachable code which had been created by the compiler
to deal with calling destructors shall an exception be
thrown. The compiler no longer generates these warnings for
compiler generated code.
o Assigning the address of a NULL pointer to a variable was
causing the compiler to issue integrity checks. This is now
handled correctly.
o A problem was corrected in the information written to an
object module compiled using /debug to allow the debugger
to locate the source files of template instantiations.
o The compiler was micalculating the size of multidimensional
arrays in our exception handling support. Destructors
called for these array elements were being given an
incorrect offset and would sometimes access beyond its
array boundary.
o A problem has been fixed where using the += operator on
a variable pointed to by a char** member variable now
operates correctly. There were cases which caused an extra
increment operation to occur.
o Static arrays within inline member functions with an
initializer list containing both constant and non-
constant initializers were not initialized correctly. Array
elements initialized by constant initializers were instead
initialized to 0. The compiler now initializes all array
elements correctly.
o The compiler no longer generates a GEM_ASSERTION when
generating a listing for a file containing a #pragma module
statement.
o The macro __VMS_VER is no longer defined when the compiler
cannot parse the version string of the underlying OpenVMS
operating system. Prior to this change it was defined as
zero.
Standard Library
o The run-time exception library no longer creates a new
lock on each call to the cxxl$set_condition function. It
now properly converts a single lock to and from exclusive
access mode.
o Compaq C++ version 6.2 had a bug in the string extraction
operator that caused it to eat the extra space at the end
of the string:
ifstream inFile("input.dat"); // input.dat contains "abc de"
inFile >> word; // read "abc"
inFile.get(ch1); // ch1 should be space, was 'd'
This problem has been fixed.
o The basic_string reference count used to be protected by a
mutex, which called thread locking and unlocking routines
to ensure thread safety. The implementation was changed
to instead use atomic builtins (see Appendix B of the C++
Using Guide), which should improve the performance of this
class in multithreaded applications.
o The basic_string::find_first_not_of(charT, size_type)
function did not work correctly if the string contained
embedded nulls. This has been corrected in this release.
o If you compiled your program in strict_ansi mode and used
the basic_fstream class, run-time access violations could
happen. This is fixed in this release.
o The V6.2 version of standard iostreams and locales had a
bug which prevented them from being multi-thread safe. This
has been fixed.
o The standard library vector class did not allocate space
for elements greater than 1024 bytes correctly, which could
lead to runtime core dumps. This has been fixed.
o A fix was added to the tree data structure (which sets and
maps use) which will decrease the amount of space allocated
for small element size containers.
o In V6.2, basic_ostream::flush() would not always flush the
buffer if the type of the stream was an fstream. This has
been fixed.
o The standard library headers no longer include pthread.h or
tis.h. This allows them to be used in conjunction with the
macro _PTHREAD_USE_D4 (DECthreads POSIX 1003.4a/Draft 4 (or
d4) interface).
Problems Addressed in CXXAE01062:
Compiler
o The compiler now generates code that reports a static
data member as an undefined symbol at link time if the
data member is referenced but not defined.
o The new cxxlink design implemented in Version 6.2 to
use .olbs instead of objects is not a general solution.
The default behavior of cxxlink was changed back to
using objects (/prelink=use_object_files) and the
switch /prelink=use_olb was added to obtain the new
mechanism. The new mechanism was simplified for better
performance. No attempt is made to try alternative link
methods if the link fails; the default link must be
used.
o Names in the C++ standard library are now prefixed
with CXXL$ as a facility prefix. This change allows
/names=as_is to work because the prefixed names are
always in uppercase.
o In the C++ Version 6.1 compiler, some objects might
have their exception unwinding information set to a
negative index in the cleanup table. This condition
generates the following message:
Unexpected dtor_block_tag in do_dtor_cleanup
Standard Library
o In versions 6.2 and earlier, a problem in the
assignment operator for the class raw_storage_iterator
could cause a run-time seg fault if, for example, you
called the algorithm stable_sort() more than once with
the same container. The problem has been corrected.
o In version 6.2, two of the basic_string::compare()
member funrtions were throwing an exception if the
length of the second string was longer than the length
of the current string. This has been fixed so that
they throw an exception only if the position the user
specifies within the second string is greater than the
length of the second string.
o A problem in the basic_string::resize() member function
in Version 6.2 has been corrected. The incorrect
behaveior was that if two strings pointed at the
same underlying char*, and the resize() function was
called on one of them, and if you then you changed the
underlying string for one string, the value for the
other strings value would also be changed.
o A problem in the basic_string assignment operator
prevented strings containing embedded nulls from being
copied correctly. The problem has been corrected.
INSTALLATION NOTES:
The system does not need to be rebooted after this kit is installed.
However, if the system is a member of a VMScluster, the other cluster
members should be rebooted or this kit should be installed on each
system in order to make use of the new image(s).
All trademarks are the property of their respective owners.
Copyright (c) Compaq Computer Corporation 2000. All rights reserved.
Modification Date: 12-OCT-2000
Modification Type: ARCHIVED
PRODUCT: Compaq C++ V6.2 for OpenVMS Alpha
OP/SYS: OpenVMS Alpha
COMPONENT: CXX$COMPILER
CXX$DEMANGLE
CXX$LINK
CXX$COMPILER_MSG
CXX$LINK_MSG
LIBCXXSTD.OLB
SOURCE: Compaq Computer Corporation
ECO INFORMATION:
ECO Kit Name: CXXAE01062
ECO Kits Superseded by This ECO Kit: None
ECO Kit Approximate Size: 88,893 Blocks
Kit Applies To: Compaq C++ V6.2 for OpenVMS Alpha
OpenVMS Alpha V6.2 through V7.2-1
System/Cluster Reboot Necessary: No
Rolling Re-boot Supported: Information Not Available
Installation Rating: INSTALL_3
3 - To be installed on all systems running
the listed versions of OpenVMS which
are experiencing the problems described.
Kit Dependencies:
The following remedial kit(s) must be installed BEFORE
installation of this kit:
None
In order to receive all the corrections listed in this
kit, the following remedial kits should also be installed:
None
ECO KIT SUMMARY:
An ECO kit exists for Compaq C++ V6.2 for OpenVMS Alpha on OpenVMS
Alpha V6.2 through V7.2-1. This kit addresses the following problems:
Compiler
o The compiler now generates code that reports a static
data member as an undefined symbol at link time if the
data member is referenced but not defined.
o The new cxxlink design implemented in Version 6.2 to
use .olbs instead of objects is not a general solution.
The default behavior of cxxlink was changed back to
using objects (/prelink=use_object_files) and the
switch /prelink=use_olb was added to obtain the new
mechanism. The new mechanism was simplified for better
performance. No attempt is made to try alternative link
methods if the link fails; the default link must be
used.
o Names in the C++ standard library are now prefixed
with CXXL$ as a facility prefix. This change allows
/names=as_is to work because the prefixed names are
always in uppercase.
o In the C++ Version 6.1 compiler, some objects might
have their exception unwinding information set to a
negative index in the cleanup table. This condition
generates the following message:
Unexpected dtor_block_tag in do_dtor_cleanup
Standard Library
o In versions 6.2 and earlier, a problem in the
assignment operator for the class raw_storage_iterator
could cause a run-time seg fault if, for example, you
called the algorithm stable_sort() more than once with
the same container. The problem has been corrected.
o In version 6.2, two of the basic_string::compare()
member funrtions were throwing an exception if the
length of the second string was longer than the length
of the current string. This has been fixed so that
they throw an exception only if the position the user
specifies within the second string is greater than the
length of the second string.
o A problem in the basic_string::resize() member function
in Version 6.2 has been corrected. The incorrect
behaveior was that if two strings pointed at the
same underlying char*, and the resize() function was
called on one of them, and if you then you changed the
underlying string for one string, the value for the
other strings value would also be changed.
o A problem in the basic_string assignment operator
prevented strings containing embedded nulls from being
copied correctly. The problem has been corrected.
INSTALLATION NOTES:
The system does not need to be rebooted after this kit is installed.
However, if the system is a member of a VMScluster, the other cluster
members should be rebooted or this kit should be installed on each
system in order to make use of the new image(s).
All trademarks are the property of their respective owners.
This patch can be found at any of these sites:
Colorado Site
Georgia Site
Files on this server are as follows:
cxxae02062.README
cxxae02062.CHKSUM
cxxae02062.CVRLET_TXT
cxxae02062.a-dcx_axpexe
cxxae02062.CVRLET_TXT
|