Patch-ID# 101910-08 Keywords: class multiple inheritance initialization linking templates virtual Synopsis: SPARCompilers 3.0.1 (C++ 4.0.1): jumbo patch Date: Apr/12/95 Solaris Release: 2.2 2.3 2.4 SunOS Release: 5.2 5.3 5.4 Unbundled Product: SPARCompilers (C++ 4.0.1) Unbundled Release: 3.0.1 Relevant Architectures: sparc BugId's fixed with this patch: 1168887 1171109 1172054 1172054 1172596 1172854 1173166 1173307 1173308 1173618 1173700 1175000 1175000 1175021 1175259 1175397 1175460 1175777 1175777 1176211 1176218 1177096 1177634 1177634 1177758 1178122 1178612 1178735 1179111 1179111 1179624 1179628 1180373 1180564 1180564 1180869 1180926 1181110 1181110 1181969 1182286 1182748 1182836 1182934 1182934 1184772 1184772 1185086 1185583 1186231 1186231 1186231 1186880 1186880 1186940 1187592 1187592 1187952 1188214 1188214 1188320 1188320 1188663 1188663 1188776 1188776 1189003 1189049 1189049 1189734 1189905 1189905 1191743 1192326 1192593 1192598 1193219 1193473 1193494 Changes incorporated in this version: 1178598 1186695 1193270 1193314 1193493 1193823 1194374 1195218 1195760 1196331 1196358 1196809 1197739 1198702 1199113 Patches accumulated and obsoleted by this patch: Patches which conflict with this patch: Patches required with this patch: 101242-09 Obsoleted by: Files included with this patch: CC ccfe libC.a libtask.a tdb_link CC.1 as fbe cg Problem Description: 1178598 virtual functions with virtual base class doesnot pick right fuction. 1186695 C++ program won't compile without -g option w/ C++4.0.1. 1193270 different flag results in different behaviors at run-time with code included 1193314 assertion error in ../../front/src/prepexpression.cc, line 37 1193493 virtual function gives signal ABRT at runtime 1193823 core dump on method call when using virtual inheritance at multiple levels 1194374 virtual function dumped core with ****Pure virtual function called message. 1195218 creating aliases with pragma weak does not work 1195760 label number not reset compiling template .o files 1196331 C++ 4.0.1: problem with overloaded user-defined conversions 1196358 Order of compiles and links in template using files causes link errors 1196809 Uninitialized field in ccfe (bug in initialization of var_descr) 1197739 Spurrious C++4.0.1(template related?) linking errors? 1198702 template functions are not declared static when using -pto 1199113 TDB_LINK doesn't re-use -I paths when regenerating templates Other C++ bugs fixed with this patch -------------------------------- Bug Id Synopsis 1168887 task library fails a correct program with "object::delete(): on chain" 1172054 strstream::seekp(val) does not actually change the put pointer 1172596 under some circumstances, throwing exceptions causes destructors to be invoked on bogus local objects. 1172854 -pto is not producing file static template instance functions 1173166 program containing ostream object initialized to 0 coredumps in destructor of ostream. 1173307 simple tests in libtask fail 1173618 No way to declare specialization of template class constructor. 1173700 SEGV processing pre-processor directive in template definition file 1175000 Copy constructor and assignment operator of class ios should be private 1175021 fatal error in ccfe, segmentation fault 1175259 Template instantiation fails in parallel make 1175460 SEGV on legal template code 1175777 long long not guarded in iostream.h on 4.x, problem with -nocx 1176211 Can't initialize a static member of a 2 argument templated class. 1176218 Can't use non-inline templated derived class constructor. 1177096 Weaks in macros don't work with patched patch 101910-02 1177634 +w warnings from strstream.h 1177758 Destructors for temps improperly executed in flow-through case 1178122 Problem with duplicate vtbls in user .o and template .o 1178612 Does not set bit is_stcall in IR for functions returning a pointer to a member function. When compiled with -O, causes iropt to SEGV. 1178735 A test program that is compiled with libtask.a from repeatedly fails with "task::task() or task::resume(): stack overflow". 1179111 Bug in libC_mtstubs 1179624 Assertion error in ccfe, front/src/ftemplate.cc. 1179628 Compiler can't initialize a static template member with multi-arg constructor. 1180373 Runtime environment is not dealing with multiple inheritance. 1180564 istreams get set to EOF when a SIGALRM happens 1180869 Const arrays gives multiply defined symbols 1181110 C++ derived class stab gets missing field descrip. for self-pointer 1181969 C++ compiler is not handling the multiple inheritance properly 1182286 Destructor of temporay object is called twice. 1182748 Signal 10 while processing file, regression in C++ 4.0.1 patch 1182836 compiler terminates with assertion message at arbitrary line in source 1182934 Writing to a strstream moves the get (tellg) pointer 1184772 ios formatting fails to print floating point numbers as printf() 1185086 typedef of instantiated template not recognized 1186940 signal 11 generated during template processing 1186231 C++4.0.1 patch#101910-04 introduce a new problem with -pto used 1186880 C++ 4.0.1 core dumps when calling virtual void function 1187592 The fstream class does not handle pipes (FIFO) properly. 1188214 assertion failure in multiple.cc while processing template 1188320 incorrect code generated for exception. local destructors not called 1188663 Signal 10 while processing file with -g, line number 0 1188776 Overloading problem in C++ 4.0.1 1189049 assertion error in bindutil.cc line 865 1189003 C++ compiler problem processing default arguments 1189734 The exception handling does not properly unwind the stack. 1189905 Template mechanism regenerates template unnecessarily 1191743 C++ 4.0.1 (100910-05 applied) gets assertion error 1192326 problem specializing a method 1192593 SEGV regression in test suite with fix for 1173940 in tdb_link 1192598 No way to declare specialization of template class destructor 1193219 Destructors don't get called after an exception is 'thrown' in constructor 1193494 Assertion error: (../../front/src/emitexpression.cc, line 247) 1193473 undefined vtbl error message is really confusing when used with ild Other bugs fixed with this patch -------------------------------- Bug Id Synopsis 1171109 compiler with -O2 option causes assertion failed error 1173308 assertion failure in code generator compiling simple prog with -O 1175397 using FORTRAN optimization produces incorrect results 1180926 cg botches 8 or 16 bit arithmetic 1185583 optimizer moves assigment ahead from exception raise 1191171 as gives internal error write_relocs(): r_symp==NULL Patch Installation Instructions: -------------------------------- Generic 'installpatch' and 'backoutpatch' scripts are provided within each patch package with instructions appended to this section. Other specific or unique installation instructions may also be necessary and should be described below. Special Install Instructions: ----------------------------- None. Instructions to install patch using "installpatch" -------------------------------------------------- 1. Become super-user. 2. Apply the patch by typing:
.
See /tmp/log. for reason for failure.
Explanation and recommended action: The installation of one of
patch packages failed. Installpatch will backout the patch
to leave the system in its pre-patched state. See the log file
for the reason for failure. Correct the problem and
re-apply the patch.
Error message:
Pkgadd of package failed with error code .
Will not backout patch...patch re-installation.
Warning: The system may be in an unstable state!
See /tmp/log. for reason for failure.
Explanation and recommended action: The installation of one of
the patch packages failed. Installpatch will NOT backout the
patch. You may manually backout the patch using backoutpatch,
then re-apply the entire patch. Look in the log file for the
reason pkgadd failed. Correct the problem and re-apply the
patch.
Patch Installation Messages:
---------------------------
Note: the messages listed below are not necessarily considered errors
as indicated in the explanations given. These messages are, however,
recorded in the patch installation log for diagnostic reference.
Message:
Package not patched:
PKG=SUNxxxx
Original package not installed
Explanation: One of the components of the patch would have patched a
package that is not installed on your system. This is not
necessarily an error. A Patch may fix a related bug for several
packages. Example: suppose a patch fixes a bug in both the
online-backup and fddi packages. If you had online-backup installed
but didn't have fddi installed, you would get the message
Package not patched:
PKG=SUNWbf
Original package not installed
This message only indicates an error if you thought the package
was installed on your system. If this is the case, take the
necessary action to install the package, backout the patch (if
it installed other packages) and re-install the patch.
Message:
Package not patched:
PKG=SUNxxx
ARCH=xxxxxxx
VERSION=xxxxxxx
Architecture mismatch
Explanation: One of the components of the patch would have patched a
package for an architecture different from your system. This is not
necessarily an error. Any patch to one of the architecture specific
packages may contain one element for each of the possible
architectures. For example, Assume you are running on a sun4m. If
you were to install a patch to package SUNWcar, you would see the
following (or similar) messages:
Package not patched:
PKG=SUNWcar
ARCH=sparc.sun4c
VERSION=11.5.0,REV=2.0.18
Architecture mismatch
Package not patched:
PKG=SUNWcar
ARCH=sparc.sun4d
VERSION=11.5.0,REV=2.0.18
Architecture mismatch
Package not patched:
PKG=SUNWcar
ARCH=sparc.sun4e
VERSION=11.5.0,REV=2.0.18
Architecture mismatch
Package not patched:
PKG=SUNWcar
ARCH=sparc.sun4
VERSION=11.5.0,REV=2.0.18
Architecture mismatch
The only time these messages indicate an error condition
is if installpatch does not correctly recognize your architecture.
Message:
Package not patched:
PKG=SUNxxxx
ARCH=xxxx
VERSION=xxxxxxx
Version mismatch
Explanation: The version of software to which the patch is applied is
not installed on your system. For example, if you were running Solaris
5.3, and you tried to install a patch against Solaris 5.2, you would
see the following (or similar) message:
Package not patched:
PKG=SUNWcsu
ARCH=sparc
VERSION=10.0.2
Version mismatch
This message does not necessarily indicate an error. If
the version mismatch was for a package you needed patched, either
get the correct patch version or install the correct package version.
Then backout the patch (if necessary) and re-apply.
Message:
Re-installing Patch.
Explanation: The patch has already been applied, but there is
at least one package in the patch that could be added. For
example, if you applied a patch that had both Openwindows and
Answerbook components, but your system did not have Answerbook
installed, the Answerbook parts of the patch would not have
been applied. If, at a later time, you pkgadd Answerbook, you
could re-apply the patch, and the Answerbook components of the
patch would be applied to the system.
Message:
Installpatch Interrupted.
Installpatch is terminating.
Explanation: Installpatch was interrupted during execution
(usually through pressing ^C). Installpatch will clean up
its working files and exit.
Message:
Installpatch Interrupted.
Backing out Patch...
Explanation: Installpatch was interrupted during execution
(usually through pressing ^C). Installpatch will clean up
its working files, backout the patch, and exit.
Patch Backout Errors:
---------------------
Error message:
prebackout patch exited with return code .
Backoutpatch exiting.
Explanation and corrective action: the prebackout script
supplied with the patch exited with a return code other
than 0. Generate a script trace of backoutpatch to determine
why the prebackout script failed. Correct the reason for
failure, and re-execute backoutpatch.
Error message:
postbackout patch exited with return code .
Backoutpatch exiting."
Explanation and corrective action: the postbackout script
supplied with the patch exited with a return code other than
0. Look at the postbackout script to determine why it failed.
Correct the failure and, if necessary, RE-EXECUTE THE
POSTBACKOUT SCRIPT ONLY.
Error message:
Only one service may be defined.
Explanation and corrective action: You have attempted to specify
more than one service from which to backout a patch. Different
services must have their patches backed out with different
invocations of backoutpatch.
Error message:
The -S and -R arguments are mutually exclusive.
Explanation and recommended action: You have specified both a
non-native service to backout, and a package installation root.
These two arguments are mutually exclusive. If backing out a
patch from a non-native usr partition, the -S option should be
used. If backing out a patch from a client's root
partition (either native or non-native), the -R option
should be used.
Error message:
The service cannot be found on this system.
Explanation and recommended action: You have specified a non-
native service from which to backout a patch, but the
specified service is not installed on your system. Correctly
specify the service when backing out the patch.
Error message:
Only one rootdir may be defined.
Explanation and recommended action: You have specified more than
one package install root using the -R option. The -R option
may be used only once per invocation of backoutpatch.
Error message:
The directory cannot be found on this system.
Explanation and recommended action: You have specified a
directory using the -R option which is either not mounted,
or does not exist on your system. Verify the directory name
and re-backout the patch.
Error message:
Patch has not been successfully applied to this system.
Explanation and recommended action: You have attempted to backout
a patch that is not applied to this system. If you must
restore previous versions of patched files, you may have to
restore the original files from the initial installation CD.
Error message:
Patch has not been successfully applied to this system.
Will remove directory
Explanation and recommended action: You have attempted to back
out a patch that is not applied to this system. While the
patch has not been applied, a residual
/var/sadm/patch/ (perhaps from an unsuccessful
installpatch) directory still exists. The patch cannot be
backed out. If you must restore old versions of the patched
files, you may have to restore them from the initial
installation CD.
Error message:
This patch was obsoleted by patch .
Patches must be backed out in the order in
which they were installed. Patch backout aborted.
Explanation and recommended action: You are attempting to backout
patches out of order. Patches should never be backed-out out
of sequence. This could undermine the integrity of the more
current patch.
Error message:
Patch was installed without backing up the original
files. It cannot be backed out.
Explanation and recommended action: Either the -d option of
installpatch was set when the patch was applied, or the save
area of the patch was deleted to regain space. As a result, the
original files are not saved and backoutpatch cannot be used.
The original files can only be recovered from the original
installation CD.
Error message:
pkgrm of package failed return code .
See /var/sadm/patch//log for reason for failure.
Explanation and recommended action: The removal of one of
patch packages failed. See the log file for the reason for
failure. Correct the problem and run the backout script again.
Error message:
Restore of old files failed.
Explanation and recommended action: The backout script uses the
cpio command to restore the previous versions of the files
that were patched. The output of the cpio command should
have preceded this message. The user should take the
appropriate action to correct the cpio failure.
KNOWN PROBLEMS:
On client server machines the patch package is NOT applied
to existing clients or to the client root template space.
Therefore, when appropriate, ALL CLIENT MACHINES WILL NEED
THE PATCH APPLIED DIRECTLY USING THIS SAME INSTALLPATCH
METHOD ON THE CLIENT. See instructions above for
applying patches to a client.
A bug affecting a package utility (eg. pkgadd, pkgrm, pkgchk)
could affect the reliability of installpatch or backoutpatch
which uses package utilities to install and backout the patch
package. It is recommended that any patch that fixes package
utility problems be reviewed and, if necessary, applied before
other patches are applied. Such existing patches are:
100901 Solaris 2.1
101122 Solaris 2.2
101331 Solaris 2.3
SEE ALSO
pkgadd, pkgchk, pkgrm, pkginfo, showrev, cpio