Patch Name: PHSS_13391 Patch Description: s700_800 11.00 HP aC++ (A.03.05) to fix numerous defects Creation Date: 97/12/17 Post Date: 98/01/16 Hardware Platforms - OS Releases: s700: 11.00 s800: 11.00 Products: HP aC++ B3910B A.03.04 Filesets: ACXX.ACXX,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP ACXX.ACXX-MAN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP Automatic Reboot?: No Status: General Release Critical: No Category Tags: defect_repair general_release Path Name: /hp-ux_patches/s700_800/11.X/PHSS_13391 Symptoms: PHSS_13391: 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_13391: 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: ACXX.ACXX,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /opt/aCC/newconfig/RelNotes/ACXX.release.notes /opt/aCC/bin/aCC /opt/aCC/lib/nls/msg/C/aCC.cat /opt/aCC/lib/nls/msg/C/aCC.msgs /opt/aCC/lbin/assigner /opt/aCC/lbin/ctcom ACXX.ACXX-MAN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /opt/aCC/share/man/man1.Z/aCC.1 what(1) Output: ACXX.ACXX,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /opt/aCC/newconfig/RelNotes/ACXX.release.notes: None /opt/aCC/bin/aCC: HP aC++ B3910B A.03.05 HP aC++ B3910B A.03.04 (970930) Support Library /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.03.05 HP aC++ B3910B A.03.04 (970930) Support Library /opt/aCC/lbin/ctcom: HP aC++ B3910B A.03.05 HP aC++ B3910B A.03.05 HP-UX SLLIC/OPTIMIZER UX.11.00.104 (ROSE): 10/24/97 HP aC++ B3910B A.03.04 (970930) Stream Library HP aC++ B3910B A.03.04 (970930) Support Library Ucode Code Generator - UX11.00.015 (PACG_UX11.ROSE_B L03) REV: HP SESD Support Code High Level Optimizer - UX.11.00.971121 (UX11.ROSE) [ -DHLO_RELEASE +O2] - 02-Dec-97.18:01 Ucode-2 - UX.11.00.971121 (UX11.ROSE) - 21-Nov-97.20 :06 linkstamp 12/12/97 17:14:11 ACXX.ACXX-MAN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /opt/aCC/share/man/man1.Z/aCC.1: None cksum(1) Output: ACXX.ACXX,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: 1660589774 35841 /opt/aCC/newconfig/RelNotes/ ACXX.release.notes 79349885 184320 /opt/aCC/bin/aCC 2452461920 114611 /opt/aCC/lib/nls/msg/C/aCC.cat 540146909 232626 /opt/aCC/lib/nls/msg/C/aCC.msgs 1989005080 565084 /opt/aCC/lbin/assigner 702788141 12946460 /opt/aCC/lbin/ctcom ACXX.ACXX-MAN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: 3398748030 17503 /opt/aCC/share/man/man1.Z/aCC.1 Patch Conflicts: None Patch Dependencies: s700: 11.00: PHSS_13390 PHSS_13496 s800: 11.00: PHSS_13390 PHSS_13496 Hardware Dependencies: None Other Dependencies: None Supersedes: NoneNone Equivalent Patches: PHSS_13389: s700: 10.10 10.20 s800: 10.10 10.20 Patch Package Size: 13810 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_13391 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHSS_13391.depot By default swinstall will archive the original software in /var/adm/sw/save/PHSS_13391. If you do not wish to retain a copy of the original software, use the patch_save_files option: swinstall -x autoreboot=true -x patch_match_target=true \ -x patch_save_files=false -s /tmp/PHSS_13391.depot WARNING: If patch_save_files is false when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. For future reference, the contents of the PHSS_13391.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHSS_13391.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHSS_13391.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None