Patch Name: PHSS_22354 Patch Description: s700_800 10.x HP aC++ -AA runtime libraries (aCC A.01.30) Creation Date: 00/12/07 Post Date: 01/01/10 Hardware Platforms - OS Releases: s700: 10.01 10.10 10.20 s800: 10.01 10.10 10.20 Products: N/A Filesets: OS-Core.CORE-SHLIBS ProgSupport.LANG-MIN ACXX.ACXX ACXX-ECOM.ACXX-ECOM Automatic Reboot?: No Status: General Release Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHSS_22354 Symptoms: PHSS_22354: 1. JAGad30801: RWZoneSimple doesn't provide a valid DST rule for Europe 2. JAGad30844: -AA istrstream::seekg() moves twice as far as specified. 3. JAGad36658: Inconsistent definition of mbstate_t, requires roll for all customers using libstd_v2 to establish compatibility with the HPUX 11.11 runtime. 4. JAGad40631: Missing stubs in libstd would cause unsats. Allow +I_main. PHSS_17872: 1. Performance improved for Rogue Wave RWCString when using threads 2. Signal 6 if function with try/catch doesn't have exit at bottom PHSS_16585: 1. RWCString::readLine(,true) doesn't set failbit PHSS_15043: 1. eofbit in istrstream not set correctly 2. Performance problem with STL vector 3. STL <functional> times should be replaced by multiplies (<sys/times.h>) 4. Linking with libcma causes SIGBUS at runtime PHSS_14262: 1. Loop in shared library initializer from shl_load and threads PHSS_13388: 1. Excessive memory usage with <list>, long compile times too 2. iostream library doesn't perform new/delete correctly 3. RWTPtrSortedVector::index() doesn't return npos if not found 4. RWTValHashDictionary must be replaced by RWTValHashMap 5. Memory leak with threads and libstd with string 6. const_iterator not implemented in container classes PHSS_12609: 1. string(, string::npos) throws length_error vs. out_of_range 2. Error 641 on some RW source files if -DRW_NO_STL 3. MEMBER TEMPLATES: <memory> needs more typename fixes 4. Excessive memory usage with <list>, long compile times too 5. tools.h++ headers: Future error 641 need to be fixed PHSS_10113: 1. This patch is required for the libraries to be compatible with the A.01.04 release of the aC++ compiler. The results of using incompatible libraries are unpredicatable. PHSS_10053: Slow startup times for shared libraries that have been produced with aCC. PHSS_9527: 1. Bus error in rwtool templates with -z and threads 2. Error 243 with RW template collection PHSS_9201: Error messages from dld.sl will show the incorrect location of dld.sl. They will show "/usr/lib/dld.sl" instead of "/usr/lib/aCC/dld.sl". PHSS_8324: 1. Supply core libraries for aC++ revision A.01.00. PHSS_8177: Programs compiled with aC++ will not execute unless a special dld.sl is present on the system. Defect Description: PHSS_22354: 1. JAGad30801: RWZoneSimple doesn't provide a valid DST rule for Europe 2. JAGad30844: -AA istrstream::seekg() moves twice as far as specified. 3. JAGad36658: Inconsistent definition of mbstate_t, requires roll for all customers using libstd_v2 to establish compatibility with the HPUX 11.11 runtime. 4. JAGad40631: Missing stubs in libstd would cause unsats. Allow +I_main. PHSS_17872: Resolution: 1. Performance improved for Rogue Wave RWCString when using CMA threads 2. A signal 6 may occur in libCsup if functions that have a throw do not have any returns or exit at the bottom. I.e. an infinite loop with a throw. Sometimes this error only shows up if optimization is used. Note the same applies to any caller of the function doing the throw. This can also happen if any preceding function (of any caller) in the program also has no exit. PHSS_16585: 1. RWCString::readLine(,true) only sets eofbit upon EOF. Using the ios::operator void*() does not return false in this case. The following is never false. while (f.readLine(,true)) PHSS_15043: 1. When using istrstream to read numbers or a character string at the end of the buffer, the setting of the eofbit is inconsistent. With numbers eofbit is not set. 2. the std library container vector performance problem. The execution time for insertion grows more than linearly with number of elements, as required by standard. 3. me clash for "times" defined in system header <sys/times.h> and non-standard conforming C++ standard library header <functional>. 4. Executables linked with libcma receive SIGBUS before reaching main(). PHSS_14262: 1. dld processes initializers with all signals turned off. Some applications stop responding to anything but kill -9: because dld is in a critical section with all signals turned off and static initializer locks a mutex twice causing deadlock. PHSS_13388: 1. aCC consumes much memory for small lists or other small containers this does not conform with the ANSI DRAFT. 2. The version of libCsup with patch PHSS_12609, A.01.07, changed operators new[] and delete[] to no longer call the non-array operators. This change exposed a problem in libstream where there is a mismatch in strstream and streambuf where operator new[] and then operator delete is called. 3. The function RWTPtrSortedVector<T>::index() doesn't return npos as documented, if it is < first element. It returns 0 instead. If in between elements it returns lower_bound. 4. The RogueWave documentation for tools.h++ template RWTValHashDictionary template should mention that it has four parameters. 5. Memory leak when using <string> with either threads library, libcma or libpthread. This problem will occur on 10.20, 10.30 and 11.0 with various combinations of the two leaks. 6. The following aCC program can't be compiled: #include <map> int main() { map<int, double> myMap; map<int,double>::const_iterator i = myMap.begin(); double a = i->second; // double a = (*i).second is ok! a = a * 2.5; return 0; } $ aCC main.c Error 185: "main.c", line 11 # Left side of '->' requires a pointer to class; type found was 'class const_iterator'. double a = i->second PHSS_12609: 1. basic_string(const charT* s, size_type n, const Allocator& a = Allocator()); Creates a string that contains the first n characters of s. s must not be a NULL pointer. The effects of this constructor are: An out_of_range exception will be thrown if n == npos. 2. Some RW sources/includes are giving the 641 (future) error. Here is an example one: Error (future) 641: "/opt/aCC/include/rw/xvdlist.cc", line 493 # Undeclared variable 'advance'. Did you forget to make the variable dependent on the template type parameters so it would be looked up when templates are generated? advance(); ^^^^^^^ 3. MEMBER TEMPLATES: <memory> needs more typename fixes. 4. aCC consumes much memory for small lists or other small containers. 5. Undeclared variable, future error 641, issued. PHSS_10113: 1. A.01.04 compatability PHSS_10053: The problem is that the dynamic loader is repeatedly applying relocations in a shared library, that should only be applied once. This leads to a noticable performance degradation. PHSS_9527: 1. The library was destructing an object before it had been initialized when using threads. 2. A class that inherits from a Roguewave collection template classes could not call certain functions defined in the base class. PHSS_9201: The appropriate string in the source had not been updated when the special dld.sl was created. PHSS_8324: 1. The core libraries for aC++ A.01.00 are not included in the HP-UX core releases. PHSS_8177: aC++ requires a different linker and dld.sl because of special fixups that are needed to support the C++ language. SR: 4701333732 4701343582 5003339796 5003387357 4701363366 1653217448 4701374090 5003367938 5003381178 5003392829 1653238188 4701340323 1653252395 1653258897 4701386771 4701390013 5003438820 1653233874 8606167372 8606161485 8606161528 8606171367 Patch Files: /usr/lib/libCsup.1 /usr/lib/libCsup.sl /usr/lib/libCsup.a /usr/lib/libCsup_v2.1 /usr/lib/libCsup_v2.sl /usr/lib/libCsup_v2.a /usr/lib/librwtool.1 /usr/lib/librwtool.sl /usr/lib/librwtool.a /usr/lib/libstd.1 /usr/lib/libstd.sl /usr/lib/libstd.a /usr/lib/libstd_v2.1 /usr/lib/libstd_v2.sl /usr/lib/libstd_v2.a /usr/lib/libstream.1 /usr/lib/libstream.sl /usr/lib/libstream.a /usr/lib/aCC/dld.sl what(1) Output: /usr/lib/libCsup.1: HP aC++ B3910B A.01.30 Language Support Library /usr/lib/libCsup.a: HP aC++ B3910B A.01.30 Language Support Library /usr/lib/librwtool.1: HP aC++ B3910B A.01.30 Tools.h++ Library (RogueWave Version 7.0.6) /usr/lib/librwtool.a: HP aC++ B3910B A.01.30 Tools.h++ Library (RogueWave Version 7.0.6) /usr/lib/libstd.1: HP aC++ B3910B A.01.30 C++ Standard Library (RogueWa ve Version 1.2.1) /usr/lib/libstd.a: HP aC++ B3910B A.01.30 C++ Standard Library (RogueWa ve Version 1.2.1) /usr/lib/libstream.1: HP aC++ B3910B A.01.30 Classic Iostream Library /usr/lib/libstream.a: HP aC++ B3910B A.01.30 Classic Iostream Library /usr/lib/libCsup_v2.1: HP aC++ B3910B A.01.30 Language Support Library /usr/lib/libCsup_v2.a: HP aC++ B3910B A.01.30 Language Support Library /usr/lib/libstd_v2.1: HP aC++ B3910B A.01.30 C++ Standard Library (RogueWa ve Version 2.02.01) /usr/lib/libstd_v2.a: HP aC++ B3910B A.01.30 C++ Standard Library (RogueWa ve Version 2.02.01) /usr/lib/libCsup.sl: HP aC++ B3910B A.01.30 Language Support Library /usr/lib/libCsup_v2.sl: HP aC++ B3910B A.01.30 Language Support Library /usr/lib/librwtool.sl: HP aC++ B3910B A.01.30 Tools.h++ Library (RogueWave Version 7.0.6) /usr/lib/libstd.sl: HP aC++ B3910B A.01.30 C++ Standard Library (RogueWa ve Version 1.2.1) /usr/lib/libstream.sl: HP aC++ B3910B A.01.30 Classic Iostream Library /usr/lib/libstd_v2.sl: HP aC++ B3910B A.01.30 C++ Standard Library (RogueWa ve Version 2.02.01) /usr/lib/aCC/dld.sl: None cksum(1) Output: 2451847742 188416 /usr/lib/libCsup.1 3868523463 314976 /usr/lib/libCsup.a 2561257450 1388544 /usr/lib/librwtool.1 2644355689 1466676 /usr/lib/librwtool.a 4103311869 397312 /usr/lib/libstd.1 1429566732 583952 /usr/lib/libstd.a 1421596013 233472 /usr/lib/libstream.1 1641703045 220470 /usr/lib/libstream.a 1692429042 188416 /usr/lib/libCsup_v2.1 883615101 323804 /usr/lib/libCsup_v2.a 505721471 2199552 /usr/lib/libstd_v2.1 2603554792 3908412 /usr/lib/libstd_v2.a 2451847742 188416 /usr/lib/libCsup.sl 1692429042 188416 /usr/lib/libCsup_v2.sl 2561257450 1388544 /usr/lib/librwtool.sl 4103311869 397312 /usr/lib/libstd.sl 1421596013 233472 /usr/lib/libstream.sl 505721471 2199552 /usr/lib/libstd_v2.sl 596435266 2199552 /usr/lib/aCC/dld.sl Patch Conflicts: None Patch Dependencies: s700: 10.10: PHSS_15391 s700: 10.20: PHSS_15391 s800: 10.10: PHSS_15391 s800: 10.20: PHSS_15391 Hardware Dependencies: None Other Dependencies: Every development site (on A.01.23 through A.01.27) that installs this patch MUST also install the header file patch PHSS_22867. All aC++ applications built with the -AA option on versions A.01.23 through A.01.27 must then be recompiled and relinked. If this is not done, link time or run time incompatibilities may result. See CR JAGad36658 above. Supersedes: PHSS_17872 PHSS_8177 PHSS_8324 PHSS_9201 PHSS_9527 PHSS_10053 PHSS_10113 PHSS_12609 PHSS_13388 PHSS_14262 PHSS_15043 PHSS_16585 Equivalent Patches: PHSS_22543: s700: 11.00 s800: 11.00 PHSS_22898: s700: 11.11 s800: 11.11 Patch Package Size: 11220 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_22354 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHSS_22354.depot By default swinstall will archive the original software in /var/adm/sw/patch/PHSS_22354. 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_22354.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_22354.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: NOTE TO USERS OF THE NEWLY INTRODUCED ANSI C++ STANDARD LIBRARY VERSION 2.0 (libstd_v2): If you have used aC++ versions A.01.23 through A.01.27 with the -AA option then you must install this patch. If as an ISV you have shipped a library built WITH the -AA option, please contact HP for further information. If as an end user you have received and installed third party libraries or applications built or compiled WITH the -AA option, please contact HP for further information. To determine whether your library/application uses -AA, run the command chatr <executable/runtime library> | grep libstd_v2 If the output of this command is NOT empty, your library/application uses -AA. This libstd_v2 roll is necessary to establish compatibility with the definition of mbstate_t (multibyte support) in the HPUX 11.11 runtime (libc). If you install this patch you MUST recompile and relink any applications built with the -AA option (and be sure your software vendors have done so for their products). Every development site (on A.01.23 through A.01.27) that installs this patch MUST also install the header file patch PHSS_22867. All aC++ applications built with the -AA option on versions A.01.23 through A.01.27 must then be recompiled and relinked. If this is not done, link time or run time incompatibilities may result. See CR JAGad36658 above.