--- stdcxx-4.2.1/etc/config/src/BAD_ALLOC_COPY_CTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_ALLOC_COPY_CTOR.cpp	2011-04-26 11:24:02.404959583 -0700
@@ -28,6 +28,17 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined(__SUNPRO_CC)
+#include <new>
+
+int main (int argc, char *argv[])
+{
+    std::bad_alloc ba0;
+    std::bad_alloc ba1 (ba0);
+    return 0;
+}
+
+#else
 #define TEST_COPY_CTOR
 #define main      test_bad_alloc_copy_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
@@ -37,3 +48,5 @@
 {
     return test_bad_alloc_copy_ctor (argc, argv);
 }
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_ALLOC_DTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_ALLOC_DTOR.cpp	2011-04-26 13:53:46.818422773 -0700
@@ -1,4 +1,4 @@
-// checking for bad_alloc dtor
+// checking for bad_alloc default ctor
 
 /***************************************************************************
  *
@@ -28,12 +28,29 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
-#define TEST_DTOR
-#define main test_bad_alloc_dtor
+#if defined(__SUNPRO_CC)
+
+#include <new>
+
+int main (int argc, char *argv[])
+{
+    std::bad_alloc* ba = new std::bad_alloc();
+    ba->~bad_alloc();
+
+    return 0;
+}
+
+#else
+
+#define TEST_DEFAULT_CTOR
+#define main test_bad_alloc_default_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_bad_alloc_dtor (argc, argv);
+    return test_bad_alloc_default_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_ALLOC_DEFAULT_CTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_ALLOC_DEFAULT_CTOR.cpp	2011-04-26 11:24:02.405491280 -0700
@@ -28,6 +28,19 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined(__SUNPRO_CC)
+
+#include <new>
+
+int main (int argc, char *argv[])
+{
+    std::bad_alloc ba;
+
+    return 0;
+}
+
+#else
+
 #define TEST_DEFAULT_CTOR
 #define main test_bad_alloc_default_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
@@ -37,3 +50,6 @@
 {
     return test_bad_alloc_default_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_ALLOC_WHAT.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_ALLOC_WHAT.cpp	2011-04-26 11:24:02.405744059 -0700
@@ -1,4 +1,4 @@
-// checking for bad_alloc::what()
+// checking for bad_alloc default ctor
 
 /***************************************************************************
  *
@@ -28,12 +28,28 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
-#define TEST_WHAT
-#define main test_bad_alloc_what
+#if defined(__SUNPRO_CC)
+
+#include <new>
+
+int main (int argc, char *argv[])
+{
+    std::bad_alloc ba;
+    const char* s = ba.what();
+    return 0;
+}
+
+#else
+
+#define TEST_DEFAULT_CTOR
+#define main test_bad_alloc_default_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_bad_alloc_what (argc, argv);
+    return test_bad_alloc_default_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_ALLOC_ASSIGNMENT.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_ALLOC_ASSIGNMENT.cpp	2011-04-26 11:24:02.406173871 -0700
@@ -51,6 +51,22 @@
 //   EXCEPTION_DEFAULT_CTOR.cpp
 //   EXCEPTION_DTOR.cpp
 
+#if defined(__SUNPRO_CC)
+#include <new>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_alloc ba0;
+    std::bad_alloc ba1;
+
+    ba1 = ba0;
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
 #include "config.h"
 
 
@@ -129,7 +145,6 @@
 
 }   // namespace std
 
-
 // use virtual inheritance here to prevent aggressive optimizers
 // (like VisualAge C++) from optimizing the base class dtor away
 struct Base0: virtual std::bad_alloc
@@ -498,3 +513,6 @@
 
     return Base0::what ();
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_CAST_ASSIGNMENT.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_CAST_ASSIGNMENT.cpp	2011-04-26 13:35:36.243256145 -0700
@@ -28,6 +28,24 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_cast bc0;
+    std::bad_cast bc1;
+
+    bc1 = bc0;
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
 #define TEST_ASSIGNMENT
 #define bad_alloc bad_cast
 #define main      test_bad_cast_assignment
@@ -38,3 +56,6 @@
 {
     return test_bad_cast_assignment (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_CAST_COPY_CTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_CAST_COPY_CTOR.cpp	2011-04-26 13:37:16.280528382 -0700
@@ -28,6 +28,22 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_cast bc0;
+    std::bad_cast bc1 (bc0);
+
+    return 0;
+}
+
+#else // ! __SUNPRO_CC
+
 #define TEST_COPY_CTOR
 #define bad_alloc bad_cast
 #define main      test_bad_cast_copy_ctor
@@ -38,3 +54,6 @@
 {
     return test_bad_cast_copy_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_CAST_DEFAULT_CTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_CAST_DEFAULT_CTOR.cpp	2011-04-26 13:38:33.701096561 -0700
@@ -28,6 +28,21 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_cast bc0;
+
+    return 0;
+}
+
+#else
+
 #define TEST_DEFAULT_CTOR
 #define bad_alloc bad_cast
 #define main      test_bad_cast_default_ctor
@@ -38,3 +53,6 @@
 {
     return test_bad_cast_default_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_CAST_DTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_CAST_DTOR.cpp	2011-04-26 13:52:55.955239832 -0700
@@ -1,4 +1,4 @@
-// checking for bad_cast dtor
+// checking for bad_cast default ctor
 
 /***************************************************************************
  *
@@ -28,13 +28,32 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
-#define TEST_DTOR
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_cast* bc0 = new std::bad_cast();
+    bc0->~bad_cast();
+
+    return 0;
+}
+
+#else
+
+#define TEST_DEFAULT_CTOR
 #define bad_alloc bad_cast
-#define main      test_bad_cast_dtor
+#define main      test_bad_cast_default_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_bad_cast_dtor (argc, argv);
+    return test_bad_cast_default_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_CAST_WHAT.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_CAST_WHAT.cpp	2011-04-26 13:55:15.949597605 -0700
@@ -28,6 +28,22 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_cast bc;
+    const char* c = bc.what();
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
 #define TEST_WHAT
 #define bad_alloc bad_cast
 #define main      test_bad_cast_what
@@ -38,3 +54,6 @@
 {
     return test_bad_cast_what (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_EXCEPTION_ASSIGNMENT.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_EXCEPTION_ASSIGNMENT.cpp	2011-04-26 14:03:47.469339894 -0700
@@ -28,6 +28,25 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_exception be0;
+    std::bad_exception be1;
+
+    be1 = be0;
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
 #define TEST_ASSIGNMENT
 #define bad_alloc bad_exception
 #define main      test_bad_exception_assignment
@@ -38,3 +57,6 @@
 {
     return test_bad_exception_assignment (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_EXCEPTION_COPY_CTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_EXCEPTION_COPY_CTOR.cpp	2011-04-26 14:05:23.218099844 -0700
@@ -28,6 +28,23 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined (__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_exception be0;
+    std::bad_exception be1 (be0);
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
 #define TEST_COPY_CTOR
 #define bad_alloc bad_exception
 #define main      test_bad_exception_copy_ctor
@@ -38,3 +55,6 @@
 {
     return test_bad_exception_copy_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_EXCEPTION_DEFAULT_CTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_EXCEPTION_DEFAULT_CTOR.cpp	2011-04-26 14:08:34.147321554 -0700
@@ -1,4 +1,4 @@
-// checking for bad_exception default ctor
+// checking for bad_exception copy ctor
 
 /***************************************************************************
  *
@@ -28,13 +28,32 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
-#define TEST_DEFAULT_CTOR
+#if defined (__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_exception be;
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
+#define TEST_COPY_CTOR
 #define bad_alloc bad_exception
-#define main      test_bad_exception_default_ctor
+#define main      test_bad_exception_copy_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_bad_exception_default_ctor (argc, argv);
+    return test_bad_exception_copy_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_EXCEPTION_DTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_EXCEPTION_DTOR.cpp	2011-04-26 14:07:02.939331771 -0700
@@ -1,4 +1,4 @@
-// checking for bad_exception dtor
+// checking for bad_exception copy ctor
 
 /***************************************************************************
  *
@@ -28,13 +28,33 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
-#define TEST_DTOR
+#if defined (__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_exception* be = new std::bad_exception();
+    be->~bad_exception();
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
+#define TEST_COPY_CTOR
 #define bad_alloc bad_exception
-#define main      test_bad_exception_dtor
+#define main      test_bad_exception_copy_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_bad_exception_dtor (argc, argv);
+    return test_bad_exception_copy_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_EXCEPTION_WHAT.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_EXCEPTION_WHAT.cpp	2011-04-26 14:08:24.468194595 -0700
@@ -1,4 +1,4 @@
-// checking for bad_exception::what()
+// checking for bad_exception copy ctor
 
 /***************************************************************************
  *
@@ -28,13 +28,33 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
-#define TEST_WHAT
+#if defined (__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_exception be;
+    const char* c = be.what();
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
+#define TEST_COPY_CTOR
 #define bad_alloc bad_exception
-#define main      test_bad_exception_what
+#define main      test_bad_exception_copy_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_bad_exception_what (argc, argv);
+    return test_bad_exception_copy_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_TYPEID_ASSIGNMENT.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_TYPEID_ASSIGNMENT.cpp	2011-04-26 13:56:48.373631557 -0700
@@ -28,6 +28,24 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_typeid bti0;
+    std::bad_typeid bti1;
+
+    bti1 = bti0;
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
 #define TEST_ASSIGNMENT
 #define bad_alloc bad_typeid
 #define main      test_bad_typeid_assignment
@@ -38,3 +56,6 @@
 {
     return test_bad_typeid_assignment (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_TYPEID_COPY_CTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_TYPEID_COPY_CTOR.cpp	2011-04-26 13:58:09.815296500 -0700
@@ -28,6 +28,22 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_typeid bti0;
+    std::bad_typeid bti1 (bti0);
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
 #define TEST_COPY_CTOR
 #define bad_alloc bad_typeid
 #define main      test_bad_typeid_copy_ctor
@@ -38,3 +54,6 @@
 {
     return test_bad_typeid_copy_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_TYPEID_DEFAULT_CTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_TYPEID_DEFAULT_CTOR.cpp	2011-04-26 13:59:30.736288536 -0700
@@ -28,6 +28,21 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_typeid bti0;
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
 #define TEST_DEFAULT_CTOR
 #define bad_alloc bad_typeid
 #define main      test_bad_typeid_default_ctor
@@ -38,3 +53,6 @@
 {
     return test_bad_typeid_default_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_TYPEID_DTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_TYPEID_DTOR.cpp	2011-04-26 14:00:32.735809384 -0700
@@ -1,4 +1,4 @@
-// checking for bad_typeid dtor
+// checking for bad_typeid default ctor
 
 /***************************************************************************
  *
@@ -28,13 +28,32 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
-#define TEST_DTOR
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_typeid* bti0 = new std::bad_typeid();
+    bti0->~bad_typeid();
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
+#define TEST_DEFAULT_CTOR
 #define bad_alloc bad_typeid
-#define main      test_bad_typeid_dtor
+#define main      test_bad_typeid_default_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_bad_typeid_dtor (argc, argv);
+    return test_bad_typeid_default_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/BAD_TYPEID_WHAT.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/BAD_TYPEID_WHAT.cpp	2011-04-26 14:01:21.301137727 -0700
@@ -1,4 +1,4 @@
-// checking for bad_typeid::what()
+// checking for bad_typeid default ctor
 
 /***************************************************************************
  *
@@ -28,13 +28,32 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
-#define TEST_WHAT
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+
+int
+main(int argc, char* argv[])
+{
+    std::bad_typeid bti0;
+    const char* c = bti0.what();
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
+#define TEST_DEFAULT_CTOR
 #define bad_alloc bad_typeid
-#define main      test_bad_typeid_what
+#define main      test_bad_typeid_default_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_bad_typeid_what (argc, argv);
+    return test_bad_typeid_default_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/EXCEPTION_ASSIGNMENT.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/EXCEPTION_ASSIGNMENT.cpp	2011-04-26 14:18:44.217140388 -0700
@@ -1,4 +1,4 @@
-// checking for exception assignment operator
+// checking for bad_exception assignment operator
 
 /***************************************************************************
  *
@@ -28,13 +28,35 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined(__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+
+int
+main(int argc, char* argv[])
+{
+    std::exception e0;
+    std::exception e1;
+
+    e1 = e0;
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
 #define TEST_ASSIGNMENT
-#define bad_alloc exception
-#define main      test_exception_assignment
+#define bad_alloc bad_exception
+#define main      test_bad_exception_assignment
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_exception_assignment (argc, argv);
+    return test_bad_exception_assignment (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/EXCEPTION_COPY_CTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/EXCEPTION_COPY_CTOR.cpp	2011-04-26 14:19:21.672904649 -0700
@@ -1,4 +1,4 @@
-// checking for exception copy ctor
+// checking for bad_exception copy ctor
 
 /***************************************************************************
  *
@@ -28,13 +28,33 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
+#if defined (__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+
+int
+main(int argc, char* argv[])
+{
+    std::exception e0;
+    std::exception e1 (e0);
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
 #define TEST_COPY_CTOR
-#define bad_alloc exception
-#define main      test_exception_copy_ctor
+#define bad_alloc bad_exception
+#define main      test_bad_exception_copy_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_exception_copy_ctor (argc, argv);
+    return test_bad_exception_copy_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/EXCEPTION_DEFAULT_CTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/EXCEPTION_DEFAULT_CTOR.cpp	2011-04-26 14:20:19.404241323 -0700
@@ -1,4 +1,4 @@
-// checking for exception default ctor
+// checking for bad_exception copy ctor
 
 /***************************************************************************
  *
@@ -28,13 +28,32 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
-#define TEST_DEFAULT_CTOR
-#define bad_alloc exception
-#define main      test_exception_default_ctor
+#if defined (__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+
+int
+main(int argc, char* argv[])
+{
+    std::exception e;
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
+#define TEST_COPY_CTOR
+#define bad_alloc bad_exception
+#define main      test_bad_exception_copy_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_exception_default_ctor (argc, argv);
+    return test_bad_exception_copy_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/EXCEPTION_DTOR.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/EXCEPTION_DTOR.cpp	2011-04-26 14:21:04.960910465 -0700
@@ -1,4 +1,4 @@
-// checking for exception dtor
+// checking for bad_exception copy ctor
 
 /***************************************************************************
  *
@@ -28,13 +28,33 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
-#define TEST_DTOR
-#define bad_alloc exception
-#define main      test_exception_dtor
+#if defined (__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+
+int
+main(int argc, char* argv[])
+{
+    std::exception* e = new std::exception();
+    e->~exception();
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
+#define TEST_COPY_CTOR
+#define bad_alloc bad_exception
+#define main      test_bad_exception_copy_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_exception_dtor (argc, argv);
+    return test_bad_exception_copy_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
--- stdcxx-4.2.1/etc/config/src/EXCEPTION_WHAT.cpp	2008-04-24 17:25:44.000000000 -0700
+++ stdcxx-4.2.1/etc/config/src/EXCEPTION_WHAT.cpp	2011-04-26 14:21:45.873861528 -0700
@@ -1,4 +1,4 @@
-// checking for exception::what()
+// checking for bad_exception copy ctor
 
 /***************************************************************************
  *
@@ -28,13 +28,33 @@
 #  endif   // _RWSTD_NO_RUNTIME_IN_STD
 #endif   // 0
 
-#define TEST_WHAT
-#define bad_alloc exception
-#define main      test_exception_what
+#if defined (__SUNPRO_CC)
+
+#include <new>
+#include <typeinfo>
+#include <exception>
+
+int
+main(int argc, char* argv[])
+{
+    std::exception e;
+    const char* c = e.what();
+
+    return 0;
+}
+
+#else // !__SUNPRO_CC
+
+#define TEST_COPY_CTOR
+#define bad_alloc bad_exception
+#define main      test_bad_exception_copy_ctor
 #include "BAD_ALLOC_ASSIGNMENT.cpp"
 #undef main
 
 int main (int argc, char *argv[])
 {
-    return test_exception_what (argc, argv);
+    return test_bad_exception_copy_ctor (argc, argv);
 }
+
+#endif // __SUNPRO_CC
+
