Patch-ID# 106530-05
Keywords: libC.so.5 libCrun.so.1 libdemangle.so.1
Synopsis: SunOS 5.5.1_x86: Shared library patch for C++ 
Date: Nov/08/99

Solaris Release: 2.5.1_x86

SunOS Release: 5.5.1_x86

Unbundled Product: libC

Unbundled Release: 4.0.1, 4.1, 4.2, 5.0

Relevant Architectures: i386

BugId's fixed with this patch: 1136478 1146175 1147577 1147044 1148647 1151825 1159647 1160084 1161999 1165177 1169658 1164100 1166414 1171426 1172054 1172379 1173166 1178171 1187592 1180564 1184772 1182934 1174107 1193580 1194462 1195674 1232632 1232579 1232305 1223494 1259645 1262573 1254838 1264396 1265054 4022750 4005413 4079317 4082776 4100882 4121018 4089011 4067988 4050876 4100612 4123883 4058012 4101606 4132688 4190043 4193618 4199857 4103581 4173220 4180435 4173766 4181458 4183435 4187260 4187325 4191439

Changes incorporated in this version:  4123883

Patches accumulated and obsoleted by this patch:  102859-02 

Patches which conflict with this patch:

Patches required with this patch:

Files included with this patch: 
/usr/lib/libC.so.5
/usr/include/demangle.h
/usr/lib/libCrun.so.1
/usr/lib/libdemangle.so.1

Problem Description: 

4123883  Error in Exception Handling (libC)

(from 106530-04)

4058012 segmentation fault in exeption handling (rethrow from unexp)
4101606 C++ program crashes with exception in constructor when optimized
4132688 C++ 4.2 : destructor not called without -g in a exception
4190043 Test E1166414 times out (x86 only)
4193618 Wide streams (wcout, et al.) not initialized properly
4199857 Missing symbols from libCrun.so.1

(from 106530-03)

4181458  std::nothrow not defined in libCrun
4173766  dynamic cast from private base class incorrectly allowed in compat mode
4103581  xmsg incorrect implementation
4173220  intel: abi1: bad throw_pc on a rethrow
4180435  intel: abi2: bad frame pointer in throw notification
4183435  Tagless structs need better demangling
4187260  Demangler interprets abbreviations incorrectly
4187325  Demangler crashes on a long name
4191439  missing _ex_dbg functions in libC

(from 106530-02)

4079317 C++ code gives a segmentation fault at ex_throw
4082776 dynamic casting ostream() call problem - runtime core dump
4067988 C++ 4.2 copy constructor problem

(from 106530-01)

4100612 strstream not working correctly within libC.so.5
4100882 2.6 C++ 4.2 runtime library prob with strstream.
4089011 Deadlock in IOStream::InitLock while processing .init sections
4050876 dynamic_cast won't let you cast to derived type
4121018 dbx reporting RUA errors against sync_with_stdio
4005413 throw is not thread safe
4022750 C++ multi-threaded code generates a signal fault in critical section
1174107 The functions add_vector and check_addr are very slow.
1193580 The character '0xff' is not useable as a delimiter
        in the functions istream::get(ptr, count, delim) and 
        istream::getline(ptr, count, delim) for binary input.
1194462 If a file is opened in output mode, it is not truncated to zero.
1195674 Exception lists for shared object are MT-unsafe.
1187592 the fstream class does not handle pipes (FIFO) properly
1180564 istreams get set to EOF when a SIGALRM happens
1184772 ios formatting fails to print floating point numbers as printf()
        for precision zero.
1182934 writing to a strstream moves the get (tellg) pointer
1178171 constructors not called for array allocated using  (placement) new
        (Added entry point _vector_deletex_ to libC)
1172054 strstream::seekp(val) does not actually change the put pointer
1172379 C++ 4.0 insertion into ostrstream is very slow
1173166 program containing ostream object initialized to 0 coredumps in
        destructor of ostream.
1160084 When operator new throws an exception, it does not release lock
1161999 Inputting of float values does not work in French/German locales
1165177 streams tellp() method repositions input stream pointer - it shouldn't
1169658 libC.so.5 should have a dependency on libw and libc.
1164100 Destructor for some exceptions not called on exit from handler
1166414 Need to have per thread set_terminate and set_unexpected functions
1171426 Exception stack area not properly freed in multi-thread application
1151825 bad slines for try blocks breaks dbx's whocatches
1159647 construction/destruction of arrays does not work correctly
        under multiple threads.
1148647 New mangling scheme invalidates libC.so.4; need to increase 
        the version number of the shared library.
1147044 Memory leak in libC.
1147577 Program using cin/cout in static constructors coredumps if
        compiled with -mt option.
1146175 Multi-threaded programs linked dynamically with libC don't work on 
        SunOS 5.3.
1136478 The library libC.so.4 will be bundled with SunOS 5.4 but is
        not bundled with SunOS 5.2 and "end-user" cluster of SunOS 5.3.
        (This library is bundled with "all" cluster of SunOS 5.3).
        This patch is meant for users of SunOS 5.2 and users who have
        installed the "end-user" cluster of SunOS 5.3.

(from 102859-02)
1265054 When inputting from a strstream, the EOF flag is set prematurely.
1264396 The member function fstreambase::detach() is missing from the library.
1254838 Incorrect demangling for cfront mangled name
1259645 If open mode is specified in constructor call of ifstream, it does 
        not get or'ed with ios::in
1262573 If open mode is specified in constructor call of ofstream, it does 
        not get or'ed with ios::out
1232632 Incorrect behavior of streambuf
1232579 ofstream::setbuf() works differently between C++ 3.0.1 and C++ 4.0.1
1232305 Instance of strstream class using istream get() member function 
        doesn't work
1223494 lock is acquired for every call to new even if malloc() succeeds

(from 102859-01)
None


Patch Installation Instructions:
--------------------------------
Refer to the Install.info file for instructions on using the
generic 'installpatch' and 'backoutpatch' scripts provided with
each patch.  Any other special or non-generic installation
instructions should be described below as special instructions.


Special Install Instructions:
-----------------------------
1. Determine which patches (if any) have been applied to your SUNWlibC package.
        # showrev -p | grep libC
   If no entries, or entries for earlier revisions of this patch (106539,
      106540, 106803, or 106804), are displayed, skip to step 4.
   If you have an entry(s) for either patch 101242 or 102859, skip to step 2.

2. Remove the patched SUNWlibC package:
        # pkgrm SUNWlibC

3. Install the unpatched SUNWlibC package:
        # pkgadd -d <dir>/<patch-id>/pkg SUNWlibC

   where <dir> is the directory containing the patch and <patch-id>
   is the patch number.  <dir> must be a full path name.

   Example:
        # pkgadd -d /tmp/123456-01/pkg SUNWlibC

4. Patch the SUNWlibC package using the instructions from the Install.info file.
