You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2005/11/18 17:50:40 UTC
svn commit: r345520 - /incubator/stdcxx/trunk/etc/config/src/
Author: sebor
Date: Fri Nov 18 08:50:17 2005
New Revision: 345520
URL: http://svn.apache.org/viewcvs?rev=345520&view=rev
Log:
2005-11-18 Martin Sebor <se...@roguewave.com>
* BAD_ALLOC_ASSIGNMENT.cpp: Factored code duplicated in all
the other tests into this one and simply #included this file.
* BAD_ALLOC_COPY_CTOR.cpp: Moved all code from this file to
BAD_ALLOC_ASSIGNMENT.cpp and #included the latter after
#defining the necessary macros.
* BAD_ALLOC_DEFAULT_CTOR.cpp: Same.
* BAD_ALLOC_DTOR.cpp: Same.
* BAD_ALLOC_WHAT.cpp: Same.
* BAD_CAST_ASSIGNMENT.cpp: Same.
* BAD_CAST_COPY_CTOR.cpp: Same.
* BAD_CAST_DEFAULT_CTOR.cpp: Same.
* BAD_CAST_DTOR.cpp: Same.
* BAD_CAST_WHAT.cpp: Same.
* BAD_EXCEPTION_ASSIGNMENT.cpp: Same.
* BAD_EXCEPTION_COPY_CTOR.cpp: Same.
* BAD_EXCEPTION_DEFAULT_CTOR.cpp: Same.
* BAD_EXCEPTION_DTOR.cpp: Same.
* BAD_EXCEPTION_WHAT.cpp: Same.
* BAD_TYPEID_ASSIGNMENT.cpp: Same.
* BAD_TYPEID_COPY_CTOR.cpp: Same.
* BAD_TYPEID_DEFAULT_CTOR.cpp: Same.
* BAD_TYPEID_DTOR.cpp: Same.
* BAD_TYPEID_WHAT.cpp: Same.
* EXCEPTION_ASSIGNMENT.cpp: Same.
* EXCEPTION_COPY_CTOR.cpp: Same.
* EXCEPTION_DEFAULT_CTOR.cpp: Same.
* EXCEPTION_DTOR.cpp: Same.
* EXCEPTION_WHAT.cpp: Same.
Modified:
incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_ASSIGNMENT.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_COPY_CTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_DEFAULT_CTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_DTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_WHAT.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_CAST_ASSIGNMENT.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_CAST_COPY_CTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_CAST_DEFAULT_CTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_CAST_DTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_CAST_WHAT.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_ASSIGNMENT.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_COPY_CTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_DEFAULT_CTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_DTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_WHAT.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_ASSIGNMENT.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_COPY_CTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_DEFAULT_CTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_DTOR.cpp
incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_WHAT.cpp
incubator/stdcxx/trunk/etc/config/src/EXCEPTION_ASSIGNMENT.cpp
incubator/stdcxx/trunk/etc/config/src/EXCEPTION_COPY_CTOR.cpp
incubator/stdcxx/trunk/etc/config/src/EXCEPTION_DEFAULT_CTOR.cpp
incubator/stdcxx/trunk/etc/config/src/EXCEPTION_DTOR.cpp
incubator/stdcxx/trunk/etc/config/src/EXCEPTION_WHAT.cpp
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_ASSIGNMENT.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_ASSIGNMENT.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_ASSIGNMENT.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_ASSIGNMENT.cpp Fri Nov 18 08:50:17 2005
@@ -1,5 +1,34 @@
// checking for bad_alloc assignment operator
+// NOTE: this file is #included from the following tests,
+// each of which #defines bad_alloc to the name of
+// the corresponding exception class, and exercises
+// the respective class members
+//
+// BAD_ALLOC_COPY_CTOR.cpp
+// BAD_ALLOC_DEFAULT_CTOR.cpp
+// BAD_ALLOC_DTOR.cpp
+
+// BAD_CAST_ASSIGNMENT.cpp
+// BAD_CAST_COPY_CTOR.cpp
+// BAD_CAST_DEFAULT_CTOR.cpp
+// BAD_CAST_DTOR.cpp
+
+// BAD_EXCEPTION_ASSIGNMENT.cpp
+// BAD_EXCEPTION_COPY_CTOR.cpp
+// BAD_EXCEPTION_DEFAULT_CTOR.cpp
+// BAD_EXCEPTION_DTOR.cpp
+
+// BAD_TYPEID_ASSIGNMENT.cpp
+// BAD_TYPEID_COPY_CTOR.cpp
+// BAD_TYPEID_DEFAULT_CTOR.cpp
+// BAD_TYPEID_DTOR.cpp
+
+// EXCEPTION_ASSIGNMENT.cpp
+// EXCEPTION_COPY_CTOR.cpp
+// EXCEPTION_DEFAULT_CTOR.cpp
+// EXCEPTION_DTOR.cpp
+
#if defined (_RWSTD_USE_CONFIG)
# include "config.h"
#endif
@@ -14,31 +43,36 @@
{
static int *ip;
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
+terminate_loop:
+
+ if ((ip [0] = ip [1])) { // force a SIGSEGV
+ ++ip;
+ terminate (); // recurse infinitely
+ }
+
+ // prevent gcc warnings for a function
+ // that's not supposed to return
+ goto terminate_loop;
}
-} // namespace std
+}
# endif // _RWSTD_NO_STD_TERMINATE
#endif // _RWSTD_NO_HONOR_STD
-#ifndef _RWSTD_NO_STD_BAD_ALLOC
-# define NAMESPACE(name) namespace name
+#ifndef _RWSTD_NO_RUNTIME_IN_STD
+# define NAMESPACE(name) namespace name
#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_ALLOC
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_ALLOC
-#endif // _RWSTD_NO_STD_BAD_ALLOC
+# define NAMESPACE(ignore) extern "C++"
+# define std /* empty */
+#endif // _RWSTD_NO_RUNTIME_IN_STD
+
+
+int ndefault_ctors;
+int ncopy_ctors;
+int ndtors;
+int nassignments;
NAMESPACE (std) {
@@ -46,54 +80,350 @@
class bad_alloc
{
public:
+ const void *what_;
-#ifndef _RWSTD_NO_BAD_ALLOC_DEFAULT_CTOR
+#if defined (TEST_DEFAULT_CTOR)
bad_alloc ();
-#else
-
- bad_alloc () { }
+#else // if !defined (TEST_DEFAULT_CTOR)
-#endif // _RWSTD_NO_BAD_ALLOC_DEFAULT_CTOR
+ // provide a default ctor but with a different signature
+ // than the one above to prevent multiply defined symbol
+ // linker errors in case that one is defined in the
+ // runtime library
+ bad_alloc (int = 0) { }
-#ifndef _RWSTD_NO_BAD_ALLOC_DTOR
+# if defined (TEST_DTOR)
virtual ~bad_alloc ();
-#else
+# else // if !defined (TEST_DTOR)
+
+ ~bad_alloc () { }
- virtual ~bad_alloc () { }
+# if defined (TEST_COPY_CTOR)
-#endif // _RWSTD_NO_BAD_ALLOC_DEFAULT_CTOR
+ bad_alloc (const bad_alloc&);
+
+# elif defined (TEST_WHAT)
+
+ virtual const char* what () const;
+
+# else // test assignment
+
+# if !defined (TEST_ASSIGNMENT)
+# define TEST_ASSIGNMENT
+# endif
+
+ bad_alloc& operator= (const bad_alloc&);
+
+ bad_alloc& assign (const bad_alloc &rhs) {
+ ++nassignments;
+ return *this = rhs;
+ }
+
+# endif // TEXT_...
+# endif // !TEST_DTOR
+#endif // !TEST_DEFAULT_COR
- bad_alloc& operator= (const bad_alloc&);
};
} // namespace std
-void foo ()
+// use virtual inheritance here to prevent aggressive optimizers
+// (like VisualAge C++) from optimizing the base class dtor away
+struct Base0: virtual std::bad_alloc
+{
+ typedef std::bad_alloc Base;
+
+ Base0 ();
+
+ virtual ~Base0 ();
+
+ Base0& operator= (const Base0&);
+
+ virtual const char* what () const;
+};
+
+
+struct Base1: virtual std::bad_alloc
+{
+ typedef std::bad_alloc Base;
+
+ Base1 ();
+
+ virtual ~Base1 ();
+
+ Base1& operator= (const Base1&);
+
+ virtual const char* what () const;
+};
+
+
+int which_what;
+
+struct Derived: Base0, Base1
+{
+ typedef std::bad_alloc Base;
+
+ Derived ();
+
+ virtual ~Derived ();
+
+ Derived& operator= (const Derived&);
+
+ virtual const char* what () const;
+};
+
+
+#if defined (TEST_COPY_CTOR)
+
+int test_member (int argc, void *ptr)
+{
+ // the code below must not be executed
+
+# ifndef _RWSTD_NO_EXCEPTIONS
+
+ try {
+ try {
+ if (argc > 1) {
+ std::bad_alloc *pe = (std::bad_alloc*)ptr;
+ std::bad_alloc *pf = pe + argc;
+
+ throw argc < 6 ? *pe : *pf;
+ }
+ }
+ catch (std::bad_alloc e) {
+
+ std::bad_alloc copy (e);
+
+ if (argc < 5)
+ throw copy;
+
+ if (argc < 4)
+ throw e;
+
+ if (argc < 3)
+ throw;
+ }
+ }
+ catch (std::bad_alloc e) {
+ return 0 != e.what_;
+ }
+ catch (...) {
+ return 2;
+ }
+
+ return 3;
+
+# else // if defined (_RWSTD_NO_EXCEPTIONS)
+
+ std::bad_alloc *pe = (std::bad_alloc*)ptr;
+ std::bad_alloc *pf = new std::bad_alloc (*pe);
+
+ return !(1 == ndefault_ctors && 1 == ncopy_ctors && pe->what_ == pf->what_);
+
+# endif // _RWSTD_NO_EXCEPTIONS
+
+}
+
+#elif defined (TEST_DEFAULT_CTOR)
+
+int test_member (int, void*)
+{
+ // the code below must not be executed
+
+ std::bad_alloc *pe1 = new std::bad_alloc;
+ std::bad_alloc *pe2 = new Derived;
+
+ return pe1 < pe2;
+}
+
+#elif defined (TEST_DTOR)
+
+int test_member (int argc, void *ptr)
+{
+ // the code below must not be executed
+
+ std::bad_alloc *pe;
+
+ if (1 < argc)
+ pe = (Derived*)ptr;
+ else
+ pe = (std::bad_alloc*)ptr;
+
+ delete pe;
+
+ return !(1 < argc ? 1 == ndtors : 0 == ndtors);
+}
+
+#elif defined (TEST_WHAT)
+
+int test_member (int argc, void *ptr)
+{
+ // the code below must not be executed
+
+ std::bad_alloc *pe = (std::bad_alloc*)ptr;
+ Derived *pd = (Derived*)ptr + 1;
+
+ which_what = argc;
+
+ return pe [0].what () == pd [argc].what ();
+}
+
+#else // test assignment
+
+int test_member (int argc, void *ptr)
{
- std::bad_alloc e;
- std::bad_alloc f;
+ // the code below must not be executed
+
+ std::bad_alloc *pe = (Derived*)ptr;
+
+ std::bad_alloc& (std::bad_alloc::*pf)(const std::bad_alloc&) =
+ argc < 3 ? &std::bad_alloc::operator= : &std::bad_alloc::assign;
- e = f;
+ which_what = argc;
+
+ pe [argc] = pe [argc + 1];
+ (pe [argc + 1].*pf)(pe [argc + 2]);
+
+ return pe [0].what_ == pe [1].what_ || 2 < nassignments;
}
+#endif // TEST_...
+
+
int main (int argc, char *argv[])
{
+ (void)&argv;
+ (void)&nassignments;
+ (void)&ncopy_ctors;
+ (void)&ndefault_ctors;
+
// avoid executing the body of main unless explicitly requested
// by specifying at least one command line argument (this foils
// aggressive optimizers from eliminating the code)
- (void)&argv;
if (argc < 2)
return 0;
- foo ();
+ return test_member (argc, argv);
+}
+
+
+Base0::Base0 ()
+ : Base ()
+{
+ ++ndefault_ctors;
+}
+
+
+Base0::~Base0 ()
+{
+ ++ndtors;
+}
+
+
+Base0& Base0::operator=(const Base0 &rhs)
+{
+ ++nassignments;
+
+#if defined (TEST_ASSIGNMENT)
+
+ Base::operator= (rhs);
+
+#endif // TEST_ASSIGNMENT
+
+ return *this;
+}
+
+
+const char* Base0::what () const
+{
+#if defined (TEST_WHAT)
+
+ if (1 < which_what++)
+ return Base::what ();
+
+#endif // TEST_WHAT
+
+ return "Base0";
+
+
+}
+
+
+Base1::Base1 ()
+ : Base ()
+{
+ ++ndefault_ctors;
+}
+
+
+Base1::~Base1 ()
+{
+ ++ndtors;
+}
+
+
+const char* Base1::what () const
+{
+#if defined (TEST_WHAT)
+
+ if (2 < which_what++)
+ return Base::what ();
+
+#endif // TEST_WHAT
+
+ return "Base1";
+}
+
+
+Base1& Base1::operator=(const Base1 &rhs)
+{
+ ++nassignments;
+
+#if defined (TEST_ASSIGNMENT)
+
+ Base::operator= (rhs);
+
+#endif // TEST_ASSIGNMENT
+
+ return *this;
+}
+
+
+Derived::Derived ()
+ : Base (), Base0 (), Base1 ()
+{
+ ++ndefault_ctors;
+}
+
+
+Derived::~Derived ()
+{
+ ++ndtors;
+}
+
+
+Derived& Derived::operator=(const Derived &rhs)
+{
+ ++nassignments;
+
+ Base0::operator= (rhs);
+ Base1::operator= (rhs);
+
+ return *this;
+}
+
+
+const char* Derived::what () const
+{
+ if (3 < which_what++)
+ return Base1::what ();
- // link only test
- return 0;
+ return Base0::what ();
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_COPY_CTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_COPY_CTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_COPY_CTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_COPY_CTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,127 +4,12 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
-loop:
-
- while ((ip [0] = ip [1])) { // force a SIGSEGV
- ++ip;
- terminate (); // recurse infinitely
- }
-
- goto loop;
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_ALLOC
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_ALLOC
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_ALLOC
-#endif // _RWSTD_NO_STD_BAD_ALLOC
-
-
-NAMESPACE (std) {
-
-class bad_alloc
-{
-public:
-
- bad_alloc ();
-
- virtual ~bad_alloc ();
-
- bad_alloc (const bad_alloc&);
-};
-
-#ifdef _RWSTD_NO_BAD_ALLOC_DEFAULT_CTOR
-
-bad_alloc::bad_alloc () { }
-
-#endif // _RWSTD_NO_BAD_ALLOC_DEFAULT_CTOR
-
-#ifdef _RWSTD_NO_BAD_ALLOC_DTOR
-
-virtual bad_alloc::~bad_alloc () { }
-
-#endif // _RWSTD_NO_BAD_ALLOC_DEFAULT_CTOR
-
-} // namespace std
-
+#define TEST_COPY_CTOR
+#define main test_bad_alloc_copy_ctor
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
-#ifndef _RWSTD_NO_EXCEPTIONS
-
- try {
- try {
- if (argc > 1) {
- std::bad_alloc e;
-
- throw e;
- }
- }
- catch (std::bad_alloc e) {
-
- std::bad_alloc copy (e);
-
- if (argc > 4)
- throw copy;
-
- if (argc > 3)
- throw e;
-
- if (argc > 2)
- throw;
- }
- }
- catch (std::bad_alloc e) {
-
- (void)&e;
- return 1;
- }
- catch (...) {
- return 2;
- }
-
-#else // if defined (_RWSTD_NO_EXCEPTIONS)
-
- std::bad_alloc a;
- std::bad_alloc b (a);
- (void)&b;
-
-#endif // _RWSTD_NO_EXCEPTIONS
-
- // link only test
- return 0;
+ return test_bad_alloc_copy_ctor (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_DEFAULT_CTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_DEFAULT_CTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_DEFAULT_CTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_DEFAULT_CTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,74 +4,12 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_ALLOC
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_ALLOC
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_ALLOC
-#endif // _RWSTD_NO_STD_BAD_ALLOC
-
-
-NAMESPACE (std) {
-
-class bad_alloc
-{
-public:
- bad_alloc ();
-};
-
-} // namespace std
-
+#define TEST_DEFAULT_CTOR
+#define main test_bad_alloc_default_ctor
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
-#ifndef _RWSTD_NO_EXCEPTIONS
-
- throw std::bad_alloc ();
-
- // link only test
- return 0;
-
-#else // if defined (_RWSTD_NO_EXCEPTIONS)
-
- return argv [0] == new std::bad_alloc ();
-
-#endif // _RWSTD_NO_EXCEPTIONS
-
+ return test_bad_alloc_default_ctor (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_DTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_DTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_DTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_DTOR.cpp Fri Nov 18 08:50:17 2005
@@ -1,124 +1,15 @@
// checking for bad_alloc dtor
-// NOTE: this file is #included from the following tests,
-// each of which #defines bad_alloc to the name of
-// the corresponding exception class:
-// BAD_CAST_DTOR.cpp
-// BAD_EXCEPTION_DTOR.cpp
-// BAD_TYPEID_DTOR.cpp
-// EXCEPTION_DTOR.cpp
-
#if defined (_RWSTD_USE_CONFIG)
# include "config.h"
#endif
+#define TEST_DTOR
+#define main test_bad_alloc_dtor
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- if ((ip [0] = ip [1])) { // force a SIGSEGV
- ++ip;
- terminate (); // recurse infinitely
- }
-}
-
-}
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_EXCEPTION
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_EXCEPTION
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_EXCEPTION
-#endif // _RWSTD_NO_STD_EXCEPTION
-
-
-#if !defined (bad_alloc)
-# ifdef _RWSTD_NO_BAD_ALLOC_DEFAULT_CTOR
-# define NO_DEFAULT_CTOR
-# endif // _RWSTD_NO_BAD_ALLOC_DEFAULT_CTOR
-#endif
-
-
-NAMESPACE (std) {
-
-class bad_alloc
-{
-public:
-
-# if !defined (NO_DEFAULT_CTOR)
-
- // defined in the language support library
- bad_alloc ();
-
-# else // if defined (NO_DEFAULT_CTOR)
-
- bad_alloc () { }
-
-# endif // NO_DEFAULT_CTOR
-
- virtual ~bad_alloc (); // not defined here
-};
-
-
-} // namespace std
-
-
-// use virtual inheritance here to prevent aggressive optimizers
-// (like VisualAge C++) from optimizing the base class dtor away
-struct B0: virtual std::bad_alloc { };
-struct B1: virtual std::bad_alloc { };
-
-struct Derived: B0, B1
-{
- virtual ~Derived ();
-};
-
-
-int dtor;
-
-// other tests that #include this file #define main to a function
-// with a different name (such as test_bad_cast_dtor) and call it
-// from their main()
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- // try to prevent the compiler from optimizing the dtor call away
- std::bad_alloc *ptr;
-
- if (1 < argc)
- ptr = new Derived;
- else
- ptr = new std::bad_alloc;
-
- delete ptr;
-
- return !(1 < argc ? 1 == dtor : 0 == dtor);
+ return test_bad_alloc_dtor (argc, argv);
}
-
-
-Derived::~Derived () { ++dtor; }
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_WHAT.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_WHAT.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_WHAT.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_ALLOC_WHAT.cpp Fri Nov 18 08:50:17 2005
@@ -4,82 +4,12 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-}
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_ALLOC
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_ALLOC
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_ALLOC
-#endif // _RWSTD_NO_STD_BAD_ALLOC
-
-
-NAMESPACE (std) {
-
-class bad_alloc
-{
-public:
-
- bad_alloc ();
-
- virtual ~bad_alloc ();
-
- virtual const char* what () const;
-};
-
-#ifdef _RWSTD_NO_BAD_ALLOC_DEFAULT_CTOR
-
-bad_alloc::bad_alloc () { }
-
-#endif // _RWSTD_NO_BAD_ALLOC_DEFAULT_CTOR
-
-#ifdef _RWSTD_NO_BAD_ALLOC_DTOR
-
-bad_alloc::~bad_alloc () { }
-
-#endif // _RWSTD_NO_BAD_ALLOC_DEFAULT_CTOR
-
-} // namespace std
-
+#define TEST_WHAT
+#define main test_bad_alloc_what
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- std::bad_alloc e;
-
- // link only test
- return !e.what ();
+ return test_bad_alloc_what (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_CAST_ASSIGNMENT.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_CAST_ASSIGNMENT.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_CAST_ASSIGNMENT.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_CAST_ASSIGNMENT.cpp Fri Nov 18 08:50:17 2005
@@ -4,99 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_CAST
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_CAST
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_CAST
-#endif // _RWSTD_NO_STD_BAD_CAST
-
-
-NAMESPACE (std) {
-
-class bad_cast
-{
-public:
-
-#ifndef _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
-
- bad_cast ();
-
-#else
-
- bad_cast () { }
-
-#endif // _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_BAD_CAST_DTOR
-
- virtual ~bad_cast ();
-
-#else
-
- virtual ~bad_cast () { }
-
-#endif // _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
-
- bad_cast& operator= (const bad_cast&);
-};
-
-
-} // namespace std
-
-
-void foo ()
-{
- std::bad_cast e;
- std::bad_cast f;
-
- e = f;
-
- (void)&e;
- (void)&f;
-}
-
+#define TEST_ASSIGNMENT
+#define bad_alloc bad_cast
+#define main test_bad_cast_assignment
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- foo ();
-
- // link only test
- return 0;
+ return test_bad_cast_assignment (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_CAST_COPY_CTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_CAST_COPY_CTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_CAST_COPY_CTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_CAST_COPY_CTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,92 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- if ((ip [0] = ip [1])) { // force a SIGSEGV
- ++ip;
- terminate (); // recurse infinitely
- }
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_CAST
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_CAST
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_CAST
-#endif // _RWSTD_NO_STD_BAD_CAST
-
-
-NAMESPACE (std) {
-
-class bad_cast
-{
-public:
-
-#ifndef _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
-
- bad_cast ();
-
-#else
-
- bad_cast () { }
-
-#endif // _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_BAD_CAST_DTOR
-
- virtual ~bad_cast ();
-
-#else
-
- virtual ~bad_cast () { }
-
-#endif // _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
-
- bad_cast (const bad_cast&);
-};
-
-} // namespace std
-
+#define TEST_COPY_CTOR
+#define bad_alloc bad_cast
+#define main test_bad_cast_copy_ctor
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- std::bad_cast a;
- std::bad_cast b (a);
-
- (void)&a;
- (void)&b;
-
- // link only test
- return 0;
+ return test_bad_cast_copy_ctor (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_CAST_DEFAULT_CTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_CAST_DEFAULT_CTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_CAST_DEFAULT_CTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_CAST_DEFAULT_CTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,71 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_CAST
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_CAST
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_CAST
-#endif // _RWSTD_NO_STD_BAD_CAST
-
-
-NAMESPACE (std) {
-
-class bad_cast
-{
-public:
- bad_cast ();
-};
-
-} // namespace std
-
-
-void* foo ()
-{
- // construct but do not destroy or copy
- // to avoid calling the dtor or copy ctor
- return new std::bad_cast ();
-}
-
+#define TEST_DEFAULT_CTOR
+#define bad_alloc bad_cast
+#define main test_bad_cast_default_ctor
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- // link only test
- return argv [0] == foo ();
+ return test_bad_cast_default_ctor (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_CAST_DTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_CAST_DTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_CAST_DTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_CAST_DTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,13 +4,10 @@
# include "config.h"
#endif
-#ifdef _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
-# define NO_DEFAULT_CTOR
-#endif // _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
-
+#define TEST_DTOR
#define bad_alloc bad_cast
#define main test_bad_cast_dtor
-#include "BAD_ALLOC_DTOR.cpp"
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
#undef main
int main (int argc, char *argv[])
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_CAST_WHAT.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_CAST_WHAT.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_CAST_WHAT.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_CAST_WHAT.cpp Fri Nov 18 08:50:17 2005
@@ -4,86 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-}
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_CAST
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_CAST
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_CAST
-#endif // _RWSTD_NO_STD_BAD_CAST
-
-
-NAMESPACE (std) {
-
-class bad_cast
-{
-public:
-
-#ifndef _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
-
- bad_cast ();
-
-#else
-
- bad_cast () { }
-
-#endif // _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_BAD_CAST_DTOR
-
- virtual ~bad_cast ();
-
-#else
-
- virtual ~bad_cast () { }
-
-#endif // _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
-
- virtual const char* what () const;
-};
-
-} // namespace std
-
+#define TEST_WHAT
+#define bad_alloc bad_cast
+#define main test_bad_cast_what
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- std::bad_cast bc;
-
- // link only test
- return !bc.what ();
+ return test_bad_cast_what (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_ASSIGNMENT.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_ASSIGNMENT.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_ASSIGNMENT.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_ASSIGNMENT.cpp Fri Nov 18 08:50:17 2005
@@ -4,99 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_EXCEPTION
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_EXCEPTION
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_EXCEPTION
-#endif // _RWSTD_NO_STD_BAD_EXCEPTION
-
-
-NAMESPACE (std) {
-
-class bad_exception
-{
-public:
-
-#ifndef _RWSTD_NO_BAD_EXCEPTION_DEFAULT_CTOR
-
- bad_exception ();
-
-#else
-
- bad_exception () { }
-
-#endif // _RWSTD_NO_BAD_EXCEPTION_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_BAD_EXCEPTION_DTOR
-
- virtual ~bad_exception ();
-
-#else
-
- virtual ~bad_exception () { }
-
-#endif // _RWSTD_NO_BAD_EXCEPTION_DEFAULT_CTOR
-
- bad_exception& operator= (const bad_exception&);
-};
-
-
-} // namespace std
-
-
-void foo ()
-{
- std::bad_exception e;
- std::bad_exception f;
-
- e = f;
-
- (void)&e;
- (void)&f;
-}
-
+#define TEST_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[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- foo ();
-
- // link only test
- return 0;
+ return test_bad_exception_assignment (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_COPY_CTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_COPY_CTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_COPY_CTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_COPY_CTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,92 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- if ((ip [0] = ip [1])) { // force a SIGSEGV
- ++ip;
- terminate (); // recurse infinitely
- }
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_EXCEPTION
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_EXCEPTION
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_EXCEPTION
-#endif // _RWSTD_NO_STD_BAD_EXCEPTION
-
-
-NAMESPACE (std) {
-
-class bad_exception
-{
-public:
-
-#ifndef _RWSTD_NO_BAD_EXCEPTION_DEFAULT_CTOR
-
- bad_exception ();
-
-#else
-
- bad_exception () { }
-
-#endif // _RWSTD_NO_BAD_EXCEPTION_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_BAD_EXCEPTION_DTOR
-
- virtual ~bad_exception ();
-
-#else
-
- virtual ~bad_exception () { }
-
-#endif // _RWSTD_NO_BAD_EXCEPTION_DEFAULT_CTOR
-
- bad_exception (const bad_exception&);
-};
-
-} // namespace std
-
+#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[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- std::bad_exception a;
- std::bad_exception b (a);
-
- (void)&a;
- (void)&b;
-
- // link only test
- return 0;
+ return test_bad_exception_copy_ctor (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_DEFAULT_CTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_DEFAULT_CTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_DEFAULT_CTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_DEFAULT_CTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,71 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_EXCEPTION
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_EXCEPTION
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_EXCEPTION
-#endif // _RWSTD_NO_STD_BAD_EXCEPTION
-
-
-NAMESPACE (std) {
-
-class bad_exception
-{
-public:
- bad_exception ();
-};
-
-} // namespace std
-
-
-void* foo ()
-{
- // construct but do not destroy or copy
- // to avoid calling the dtor or copy ctor
- return new std::bad_exception ();
-}
-
+#define TEST_DEFAULT_CTOR
+#define bad_alloc bad_exception
+#define main test_bad_exception_default_ctor
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- // link only test
- return argv [0] == foo ();
+ return test_bad_exception_default_ctor (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_DTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_DTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_DTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_DTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,13 +4,10 @@
# include "config.h"
#endif
-#ifdef _RWSTD_NO_BAD_EXCEPTION_DEFAULT_CTOR
-# define NO_DEFAULT_CTOR
-#endif // _RWSTD_NO_BAD_EXCEPTION_DEFAULT_CTOR
-
+#define TEST_DTOR
#define bad_alloc bad_exception
#define main test_bad_exception_dtor
-#include "BAD_ALLOC_DTOR.cpp"
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
#undef main
int main (int argc, char *argv[])
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_WHAT.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_WHAT.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_WHAT.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_EXCEPTION_WHAT.cpp Fri Nov 18 08:50:17 2005
@@ -4,86 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-}
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_EXCEPTION
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_EXCEPTION
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_EXCEPTION
-#endif // _RWSTD_NO_STD_BAD_EXCEPTION
-
-
-NAMESPACE (std) {
-
-class bad_exception
-{
-public:
-
-#ifndef _RWSTD_NO_BAD_EXCEPTION_DEFAULT_CTOR
-
- bad_exception ();
-
-#else
-
- bad_exception () { }
-
-#endif // _RWSTD_NO_BAD_EXCEPTION_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_BAD_EXCEPTION_DTOR
-
- virtual ~bad_exception ();
-
-#else
-
- virtual ~bad_exception () { }
-
-#endif // _RWSTD_NO_BAD_EXCEPTION_DEFAULT_CTOR
-
- virtual const char* what () const;
-};
-
-} // namespace std
-
+#define TEST_WHAT
+#define bad_alloc bad_exception
+#define main test_bad_exception_what
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // prevent foo from actually being called but do it so that
- // the optimizer can't actually figure it out and eliminate
- // the function
- if (argc > 256) {
- std::bad_exception be;
-
- return !be.what ();
- }
-
- // link only test
- return 0;
+ return test_bad_exception_what (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_ASSIGNMENT.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_ASSIGNMENT.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_ASSIGNMENT.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_ASSIGNMENT.cpp Fri Nov 18 08:50:17 2005
@@ -4,99 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_TYPEID
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_TYPEID
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_TYPEID
-#endif // _RWSTD_NO_STD_BAD_TYPEID
-
-
-NAMESPACE (std) {
-
-class bad_typeid
-{
-public:
-
-#ifndef _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
-
- bad_typeid ();
-
-#else
-
- bad_typeid () { }
-
-#endif // _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_BAD_TYPEID_DTOR
-
- virtual ~bad_typeid ();
-
-#else
-
- virtual ~bad_typeid () { }
-
-#endif // _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
-
- bad_typeid& operator= (const bad_typeid&);
-};
-
-
-} // namespace std
-
-
-void foo ()
-{
- std::bad_typeid e;
- std::bad_typeid f;
-
- e = f;
-
- (void)&e;
- (void)&f;
-}
-
+#define TEST_ASSIGNMENT
+#define bad_alloc bad_typeid
+#define main test_bad_typeid_assignment
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- foo ();
-
- // link only test
- return 0;
+ return test_bad_typeid_assignment (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_COPY_CTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_COPY_CTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_COPY_CTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_COPY_CTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,92 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- if ((ip [0] = ip [1])) { // force a SIGSEGV
- ++ip;
- terminate (); // recurse infinitely
- }
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_TYPEID
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_TYPEID
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_TYPEID
-#endif // _RWSTD_NO_STD_BAD_TYPEID
-
-
-NAMESPACE (std) {
-
-class bad_typeid
-{
-public:
-
-#ifndef _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
-
- bad_typeid ();
-
-#else
-
- bad_typeid () { }
-
-#endif // _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_BAD_TYPEID_DTOR
-
- virtual ~bad_typeid ();
-
-#else
-
- virtual ~bad_typeid () { }
-
-#endif // _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
-
- bad_typeid (const bad_typeid&);
-};
-
-} // namespace std
-
+#define TEST_COPY_CTOR
+#define bad_alloc bad_typeid
+#define main test_bad_typeid_copy_ctor
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- std::bad_typeid a;
- std::bad_typeid b (a);
-
- (void)&a;
- (void)&b;
-
- // link only test
- return 0;
+ return test_bad_typeid_copy_ctor (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_DEFAULT_CTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_DEFAULT_CTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_DEFAULT_CTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_DEFAULT_CTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,70 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_TYPEID
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_TYPEID
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_TYPEID
-#endif // _RWSTD_NO_STD_BAD_TYPEID
-
-
-NAMESPACE (std) {
-
-class bad_typeid
-{
-public:
-
- bad_typeid ();
-};
-
-} // namespace std
-
-
-void* foo ()
-{
- return new std::bad_typeid ();
-}
-
+#define TEST_DEFAULT_CTOR
+#define bad_alloc bad_typeid
+#define main test_bad_typeid_default_ctor
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- // link only test
- return argv [0] == foo ();
+ return test_bad_typeid_default_ctor (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_DTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_DTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_DTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_DTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,13 +4,10 @@
# include "config.h"
#endif
-#ifdef _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
-# define NO_DEFAULT_CTOR
-#endif // _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
-
+#define TEST_DTOR
#define bad_alloc bad_typeid
#define main test_bad_typeid_dtor
-#include "BAD_ALLOC_DTOR.cpp"
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
#undef main
int main (int argc, char *argv[])
Modified: incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_WHAT.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_WHAT.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_WHAT.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/BAD_TYPEID_WHAT.cpp Fri Nov 18 08:50:17 2005
@@ -4,86 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-}
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_BAD_TYPEID
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_BAD_TYPEID
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_BAD_TYPEID
-#endif // _RWSTD_NO_STD_BAD_TYPEID
-
-
-NAMESPACE (std) {
-
-class bad_typeid
-{
-public:
-
-#ifndef _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
-
- bad_typeid ();
-
-#else
-
- bad_typeid () { }
-
-#endif // _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_BAD_TYPEID_DTOR
-
- virtual ~bad_typeid ();
-
-#else
-
- virtual ~bad_typeid () { }
-
-#endif // _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
-
- virtual const char* what () const;
-};
-
-} // namespace std
-
+#define TEST_WHAT
+#define bad_alloc bad_typeid
+#define main test_bad_typeid_what
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- std::bad_typeid e;
-
- // link only test
- return !e.what ();
+ return test_bad_typeid_what (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/EXCEPTION_ASSIGNMENT.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/EXCEPTION_ASSIGNMENT.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/EXCEPTION_ASSIGNMENT.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/EXCEPTION_ASSIGNMENT.cpp Fri Nov 18 08:50:17 2005
@@ -4,96 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_EXCEPTION
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_EXCEPTION
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_EXCEPTION
-#endif // _RWSTD_NO_STD_EXCEPTION
-
-
-NAMESPACE (std) {
-
-class exception
-{
-public:
-
-#ifndef _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
-
- exception ();
-
-#else
-
- exception () { }
-
-#endif // _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_EXCEPTION_DTOR
-
- virtual ~exception ();
-
-#else
-
- virtual ~exception () { }
-
-#endif // _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
-
- exception& operator= (const exception&);
-};
-
-
-} // namespace std
-
-
-void foo ()
-{
- std::exception e;
- std::exception f;
-
- e = f;
-}
-
+#define TEST_ASSIGNMENT
+#define bad_alloc exception
+#define main test_exception_assignment
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- foo ();
-
- // link only test
- return 0;
+ return test_exception_assignment (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/EXCEPTION_COPY_CTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/EXCEPTION_COPY_CTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/EXCEPTION_COPY_CTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/EXCEPTION_COPY_CTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,121 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- if ((ip [0] = ip [1])) { // force a SIGSEGV
- ++ip;
- terminate (); // recurse infinitely
- }
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_EXCEPTION
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_EXCEPTION
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_EXCEPTION
-#endif // _RWSTD_NO_STD_EXCEPTION
-
-
-NAMESPACE (std) {
-
-class exception
-{
-public:
-
-#ifndef _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
-
- exception ();
-
-#else
-
- exception () { }
-
-#endif // _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_EXCEPTION_DTOR
-
- virtual ~exception ();
-
-#else
-
- virtual ~exception () { }
-
-#endif // _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
-
- exception (const exception&);
-};
-
-} // namespace std
-
-
-int copy;
-
-struct Derived: std::exception
-{
- typedef std::exception Base;
-
- Derived (): Base () { }
-
- Derived (const Derived &e): Base (e) { ++copy; }
-};
+#define TEST_COPY_CTOR
+#define bad_alloc exception
+#define main test_exception_copy_ctor
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- Derived d0;
- Derived d1 (d0);
- std::exception e (d0);
-
-#ifndef _RWSTD_NO_EXCEPTIONS
-
- try {
- // prevent aggressive optimizers such as Intel C++
- // from optimizing away the call to the copy ctor
- if (argc > 4)
- throw d1;
- if (argc > 3)
- throw d0;
- if (argc > 2)
- throw e;
- }
- catch (Derived d) {
- return !(2 == copy);
- }
- catch (std::exception e) {
- return !(1 == copy);
- }
-#endif
-
- // link only test
- return !(1 == copy);
+ return test_exception_copy_ctor (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/EXCEPTION_DEFAULT_CTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/EXCEPTION_DEFAULT_CTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/EXCEPTION_DEFAULT_CTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/EXCEPTION_DEFAULT_CTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,78 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-} // namespace std
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_EXCEPTION
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_EXCEPTION
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_EXCEPTION
-#endif // _RWSTD_NO_STD_EXCEPTION
-
-
-NAMESPACE (std) {
-
-class exception
-{
-public:
- exception ();
-};
-
-} // namespace std
-
-int result;
-
-struct Derived: std::exception
-{
- int dflt_;
-
- typedef std::exception Base;
-
- Derived (): Base (), dflt_ (++result) { }
-};
-
+#define TEST_DEFAULT_CTOR
+#define bad_alloc exception
+#define main test_exception_default_ctor
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- Derived *p = new Derived ();
-
- result = result != p->dflt_;
-
- // link only test
- return result;
+ return test_exception_default_ctor (argc, argv);
}
Modified: incubator/stdcxx/trunk/etc/config/src/EXCEPTION_DTOR.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/EXCEPTION_DTOR.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/EXCEPTION_DTOR.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/EXCEPTION_DTOR.cpp Fri Nov 18 08:50:17 2005
@@ -4,13 +4,10 @@
# include "config.h"
#endif
-#ifdef _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
-# define NO_DEFAULT_CTOR
-#endif
-
+#define TEST_DTOR
#define bad_alloc exception
#define main test_exception_dtor
-#include "BAD_ALLOC_DTOR.cpp"
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
#undef main
int main (int argc, char *argv[])
Modified: incubator/stdcxx/trunk/etc/config/src/EXCEPTION_WHAT.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/EXCEPTION_WHAT.cpp?rev=345520&r1=345519&r2=345520&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/EXCEPTION_WHAT.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/EXCEPTION_WHAT.cpp Fri Nov 18 08:50:17 2005
@@ -4,86 +4,13 @@
# include "config.h"
#endif
-
-#ifndef _RWSTD_NO_HONOR_STD
-# ifdef _RWSTD_NO_STD_TERMINATE
-
-namespace std {
-
-void terminate ()
-{
- static int *ip;
-
- *ip++ = 0; // force a SIGSEGV
- terminate (); // recurse infinitely
-}
-
-}
-
-# endif // _RWSTD_NO_STD_TERMINATE
-#endif // _RWSTD_NO_HONOR_STD
-
-
-#ifndef _RWSTD_NO_STD_EXCEPTION
-# define NAMESPACE(name) namespace name
-#else
-# ifndef _RWSTD_NO_GLOBAL_EXCEPTION
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# else
-# ifndef _RWSTD_NO_RUNTIME_IN_STD
-# define NAMESPACE(name) namespace name
-# else
-# define NAMESPACE(ignore) extern "C++"
-# define std /* empty */
-# endif // _RWSTD_NO_RUNTIME_IN_STD
-# endif // _RWSTD_NO_GLOBAL_EXCEPTION
-#endif // _RWSTD_NO_STD_EXCEPTION
-
-
-NAMESPACE (std) {
-
-class exception
-{
-public:
-
-#ifndef _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
-
- exception ();
-
-#else
-
- exception () { }
-
-#endif // _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
-
-#ifndef _RWSTD_NO_EXCEPTION_DTOR
-
- virtual ~exception ();
-
-#else
-
- virtual ~exception () { }
-
-#endif // _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
-
- virtual const char* what () const;
-};
-
-} // namespace std
-
+#define TEST_WHAT
+#define bad_alloc exception
+#define main test_exception_what
+#include "BAD_ALLOC_ASSIGNMENT.cpp"
+#undef main
int main (int argc, char *argv[])
{
- // avoid executing the body of main unless explicitly requested
- // by specifying at least one command line argument (this foils
- // aggressive optimizers from eliminating the code)
- (void)&argv;
- if (argc < 2)
- return 0;
-
- std::exception e;
-
- // link only test
- return !e.what ();
+ return test_exception_what (argc, argv);
}