Patch Name: PHSS_13389 Patch Description: s700_800 10.[12]0 HP aC++ compiler (A.01.09) patch Creation Date: 97/12/17 Post Date: 98/01/08 Hardware Platforms - OS Releases: s700: 10.10 10.20 s800: 10.10 10.20 Products: HP aC++ B3910B A.01.07 Filesets: ACXX.ACXX ACXX.ACXX-MAN Auxiliary-Opt.LANG-AUX Automatic Reboot?: No Status: General Superseded Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHSS_13389 Symptoms: PHSS_13389: 1. Excessive CPU and VM usage and compile time with STL 2. Warning 567 incorrectly given if #line used before #if/#endif 3. Recursive stack overflow, ::operator new calls class new instead 4. Signal 11 on function scope static reference 5. Assertion in Signatures.C 6. Signal 11 after syntax error in doReduction1 7. Signal 11 after syntax error in getTemplate 8. Bad code for 0 for pointer to member function as func parm 9. Signal 11 in unifyClassTemplates 10. Signal 11 on friend function definition 11. Error 5705 and OOPS message declaring extern in function 12. Error 19 when using friend ::operator, also scope of friend 13. Unsatisfied symbols when using string and namespace 14. Duplicate include file optimization prevents second include 15. Truncated .i files with +inst_implicit_include -P/-E 16. Error 5726 bad NSYMs with +O2, static within inline template 17. StringConstant type lost when casting 18. unions not aligned on 4 byte boundaries, if int members 19. Static destructors not invoked during 64-bit shared lib unload 20. Wrong dtor called when template arg is pointer (when indexed) 21. Compiler generated copy constructor overwrites memory 22. Duplicate symbols with inlines and +inst_none 23. Preprocessor omits spacing for function typedefs with -E/-P 24. Copy assignment misses second entry point %2 25. Bad mangled name with "~" on call to class destructor in template 26. Signal 11 when using templates, long mangled names > 8K 27. Assertion in TypePackage.C Defect Description: PHSS_13389: 1. Inliner consumes lots of memory for STL templates. 2. aCC issued spurious warnings about ifndef/endif being in separate files in the presence of a line directive that reset the file name and a header file inclusion prior to the endif directive. 3. Calling ::operator new within a class with operator new gets a recursive stack overflow. 4. Reference initializer temporaries of the wrong storage class were being reused 5. Copying template arguments on qualified variable can leave multiple owners of a single block of memory 6. aCC cannot recover from user error. So, compilation will be terminated, instead of continuing. 7. aCC cannot fully recover from user error. So, it will terminate the compilation in the next release, instead of running wild. 8. Passing 0 valued pointer-to-member-function to a function fails. This resulted in bad code generation. Generated code was in such a way that it is not always possible to see the incorrect behavior. The default valued pointer-to-function was not a factor. It just happened to show the symptom. 9. Partial specializations were not taken into account when unifying template arguments with their parameters 10. Using mod_elt without template arguments inside friend function definition loses context necessary to resolve the template name 11. Error 5705 and an OOPS message occurs when declaring extern in a function. OOPS!! Variable::emitCode(): unexpected declPtr->classId(): Class 12. Grammar support for friend ::operator was missing. 13. Type_info names are mistakenly created inside the user's namespace 14. If an include file using a poor coding style has two conditional compilation sections that has the #endif at the end of the include, then the file is only included once. #ifndef XX #define XX #endif stuff-1 #ifdef YY stuff-2 #endif 15. Truncated .i files with +inst_implicit_include -P/-E. 16. If a function scope static occurs inside a inline function then error 5726 may occur if optimizing. 17. Problem was that NSYM MODIFIER was not being generated for string constant for its type being const char[]. 18. Run time aborts may occur if a union contains ints, doubles, pointers and char arrays such that the char array size is not a multiple of the other more restricted aligned types. 19. Static destructors not invoked during shared lib unload on 64-bit. 20. Semantics checking on .~X() is not checking for non-class object. 21. Compiler-generated copy constructors for classes that declare bitfield data members near the end of the class may overwrite memory by as much as three bytes beyond the end of the memory associated with an object of such a class. 22. Compiling two sources that use the same inline function with +inst_none may get duplicate symbols in the linker if the functions must be dropped out of line. 23. Given the input typedef int (func) (); the preprocessor produces typedef intfunc (); 24. Unsats like D::operator =(const D &)%2 (code) may occur. 25. Unsatisfied symbols occur with embedded "~" when explicitly calling a destructor with this->~foo() in a template. 26. The compiler will abort with signal 11 if using templates that generate external names of over 4000 (with -g) or 8K bytes. Also various other tools will abort with these long lengths. 27. Problem occurs when aggregate has a initial member of array type and an initializer list. SR: 1653218099 1653220145 1653232819 1653233494 1653234021 1653234120 1653234146 1653235333 1653235465 1653235804 1653236604 1653237081 1653238105 1653239848 4701354894 4701359653 4701367557 4701369702 4701370809 4701374074 4701374355 4701374777 4701375568 4701376749 5003392829 5003387910 5003398776 Patch Files: /opt/aCC/newconfig/RelNotes/ACXX.release.notes /opt/aCC/bin/aCC /opt/aCC/share/man/man1.Z/aCC.1 /opt/aCC/lib/nls/msg/C/aCC.cat /opt/aCC/lib/nls/msg/C/aCC.msgs /opt/aCC/lbin/assigner /opt/aCC/lbin/ctcom /opt/langtools/lib/nls/msg/C/ucomp.cat.tmp /opt/langtools/lbin/ucomp.tmp what(1) Output: /opt/aCC/newconfig/RelNotes/ACXX.release.notes: None /opt/aCC/bin/aCC: HP aC++ B3910B A.01.09 HP aC++ B3910B A.01.01 Support Library /opt/aCC/share/man/man1.Z/aCC.1: None /opt/aCC/lib/nls/msg/C/aCC.cat: None /opt/aCC/lib/nls/msg/C/aCC.msgs: None /opt/aCC/lbin/assigner: HP aC++ B3910B A.01.09 HP aC++ B3910B A.01.01 Support Library /opt/aCC/lbin/ctcom: HP aC++ B3910B A.01.09 HP aC++ B3910B A.01.09 HP-UX SLLIC/OPTIMIZER UX.10.20.556 (DAVIS): 11/25/97 HP aC++ B3910B A.01.01 Stream Library HP aC++ B3910B A.01.01 Support Library Ucode Code Generator - UX10.20.59 (PACG_UX10.MULTI_B L31) REV: HP SESD Support Code High Level Optimizer - UX.10.21.971124 (UX10.MULTI) [-DHLO_RELEASE +O2] - 26-Nov-97.14:32 linkstamp 12/11/97 18:30:33 /opt/langtools/lbin/ucomp.tmp: HP-UX UCOMP UX.10.20.308 (DAVIS): 09/29/97 HP-UX SLLIC/OPTIMIZER UX.10.20.554 (DAVIS): 09/29/97 Ucode Code Generator - UX10.20.56 (PACG_UX10.MULTI_B L29) High Level Optimizer - UX.10.21.970930 (UX10.MULTI) [-DHLO_RELEASE +O3] - 01-Oct-97.02:04 /usr/lib/libc: $Revision: 76.3 $ /opt/langtools/lib/nls/msg/C/ucomp.cat.tmp: None cksum(1) Output: 2272803834 38426 /opt/aCC/newconfig/RelNotes/ ACXX.release.notes 3745931130 176128 /opt/aCC/bin/aCC 3701751930 17505 /opt/aCC/share/man/man1.Z/aCC.1 3131140729 114555 /opt/aCC/lib/nls/msg/C/aCC.cat 3697396867 232056 /opt/aCC/lib/nls/msg/C/aCC.msgs 1628188597 444000 /opt/aCC/lbin/assigner 669799641 10139024 /opt/aCC/lbin/ctcom 265338172 5534949 /opt/langtools/lbin/ucomp.tmp 2780041833 38214 /opt/langtools/lib/nls/msg/C/ucomp.cat.tmp Patch Conflicts: None Patch Dependencies: s700: 10.10: PHSS_13388 PHSS_10053 PHSS_11266 PHKL_8691 s700: 10.20: PHSS_13388 PHSS_10053 PHSS_11266 PHKL_8693 PHCO_12992 s800: 10.10: PHSS_13388 PHSS_10053 PHSS_11266 PHKL_8692 s800: 10.20: PHSS_13388 PHSS_10053 PHSS_11266 PHKL_8694 PHCO_12992 Hardware Dependencies: None Other Dependencies: None Supersedes: None Equivalent Patches: PHSS_13391: s700: 11.00 s800: 11.00 Patch Package Size: 16450 KBytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHSS_13389 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHSS_13389.depot 5b. For a homogeneous NFS Diskless cluster run swcluster on the server to install the patch on the server and the clients: swcluster -i -b This will invoke swcluster in the interactive mode and force all clients to be shut down. WARNING: All cluster clients must be shut down prior to the patch installation. Installing the patch while the clients are booted is unsupported and can lead to serious problems. The swcluster command will invoke an swinstall session in which you must specify: alternate root path - default is /export/shared_root/OS_700 source depot path - /tmp/PHSS_13389.depot To complete the installation, select the patch by choosing "Actions -> Match What Target Has" and then "Actions -> Install" from the Menubar. 5c. For a heterogeneous NFS Diskless cluster: - run swinstall on the server as in step 5a to install the patch on the cluster server. - run swcluster on the server as in step 5b to install the patch on the cluster clients. By default swinstall will archive the original software in /var/adm/sw/patch/PHSS_13389. If you do not wish to retain a copy of the original software, you can create an empty file named /var/adm/sw/patch/PATCH_NOSAVE. Warning: If this file exists when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. It is recommended that you move the PHSS_13389.text file to /var/adm/sw/patch for future reference. To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHSS_13389.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None