+2007-05-11 Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/stdexcept: Remove extra spacing.
+
+ * testsuite/19_diagnostics/stdexceptions.cc: Break into...
+ * testsuite/19_diagnostics/bad_exception: ...this. Populate.
+ * testsuite/19_diagnostics/logic_error: ... this.
+ * testsuite/19_diagnostics/logic_error/what-1.cc: ...this.
+ * testsuite/19_diagnostics/logic_error/what-2.cc: ...this.
+ * testsuite/19_diagnostics/runtime_error: ...this.
+ * testsuite/19_diagnostics/runtime_error/what-1.cc: ...this.
+ * testsuite/19_diagnostics/runtime_error/what-2.cc: ...this.
+ * testsuite/19_diagnostics/runtime_error/what-3.cc: ...this.
+ * testsuite/19_diagnostics/23591_thread-1.c: Move...
+ * testsuite/19_diagnostics/bad_exception/23591_thread-1.c: ...here.
+
2007-05-10 Paolo Carlini <pcarlini@suse.de>
* 27_io/objects/wchar_t/11.cc: Include <cstring>.
// Standard exception classes -*- C++ -*-
-// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2005, 2007 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
public:
/** Takes a character string describing the error. */
explicit
- logic_error(const string& __arg);
+ logic_error(const string& __arg);
virtual
~logic_error() throw();
class domain_error : public logic_error
{
public:
- explicit domain_error(const string& __arg);
+ explicit domain_error(const string& __arg);
};
/** Thrown to report invalid arguments to functions. */
class invalid_argument : public logic_error
{
public:
- explicit invalid_argument(const string& __arg);
+ explicit invalid_argument(const string& __arg);
};
/** Thrown when an object is constructed that would exceed its maximum
class length_error : public logic_error
{
public:
- explicit length_error(const string& __arg);
+ explicit length_error(const string& __arg);
};
/** This represents an argument whose value is not within the expected
class out_of_range : public logic_error
{
public:
- explicit out_of_range(const string& __arg);
+ explicit out_of_range(const string& __arg);
};
/** Runtime errors represent problems outside the scope of a program;
public:
/** Takes a character string describing the error. */
explicit
- runtime_error(const string& __arg);
+ runtime_error(const string& __arg);
virtual
~runtime_error() throw();
class range_error : public runtime_error
{
public:
- explicit range_error(const string& __arg);
+ explicit range_error(const string& __arg);
};
/** Thrown to indicate arithmetic overflow. */
class overflow_error : public runtime_error
{
public:
- explicit overflow_error(const string& __arg);
+ explicit overflow_error(const string& __arg);
};
/** Thrown to indicate arithmetic underflow. */
class underflow_error : public runtime_error
{
public:
- explicit underflow_error(const string& __arg);
+ explicit underflow_error(const string& __arg);
};
_GLIBCXX_END_NAMESPACE
+++ /dev/null
-// { dg-require-sharedlib "" }
-// { dg-options "-g -O2 -pthread -ldl -x c" { target *-*-linux* } }
-
-// Copyright (C) 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-#include <pthread.h>
-#include <dlfcn.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-
-// NB: This must be compiled and linked as a "C" executable.
-static void* run(void* arg)
-{
- typedef void (*function_type) (void);
- void* lib;
- void (*cb)();
-
- lib = dlopen("./testsuite_shared.so", RTLD_NOW);
- if (lib == NULL)
- {
- printf("dlopen failed: %s\n", strerror(errno));
- return NULL;
- }
- cb = (function_type) dlsym(lib, "try_throw_exception");
- if (cb == NULL)
- {
- printf("dlsym failed: %s\n", strerror(errno));
- return NULL;
- }
- cb();
- dlclose(lib);
- return NULL;
-}
-
-// libstdc++/23591
-int main(void)
-{
- pthread_t pt;
-
- if (pthread_create(&pt, NULL, &run, NULL) != 0)
- return 1;
- if (pthread_join(pt, NULL) != 0)
- return 1;
-
- return 0;
-}
--- /dev/null
+// { dg-require-sharedlib "" }
+// { dg-options "-g -O2 -pthread -ldl -x c" { target *-*-linux* } }
+
+// Copyright (C) 2005 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+#include <pthread.h>
+#include <dlfcn.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+
+// NB: This must be compiled and linked as a "C" executable.
+static void* run(void* arg)
+{
+ typedef void (*function_type) (void);
+ void* lib;
+ void (*cb)();
+
+ lib = dlopen("./testsuite_shared.so", RTLD_NOW);
+ if (lib == NULL)
+ {
+ printf("dlopen failed: %s\n", strerror(errno));
+ return NULL;
+ }
+ cb = (function_type) dlsym(lib, "try_throw_exception");
+ if (cb == NULL)
+ {
+ printf("dlsym failed: %s\n", strerror(errno));
+ return NULL;
+ }
+ cb();
+ dlclose(lib);
+ return NULL;
+}
+
+// libstdc++/23591
+int main(void)
+{
+ pthread_t pt;
+
+ if (pthread_create(&pt, NULL, &run, NULL) != 0)
+ return 1;
+ if (pthread_join(pt, NULL) != 0)
+ return 1;
+
+ return 0;
+}
--- /dev/null
+// 2001-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 19.1 Exception classes
+
+#include <string>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// libstdc++/1972
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ std::string s("lack of sunlight, no water error");
+
+ // 1
+ std::logic_error obj1 = std::logic_error(s);
+
+ // 2
+ std::logic_error obj2(s);
+
+ VERIFY( std::strcmp(obj1.what(), s.data()) == 0 );
+ VERIFY( std::strcmp(obj2.what(), s.data()) == 0 );
+}
+
+void test02()
+{
+ bool test __attribute__((unused)) = true;
+ std::string s("lack of sunlight error");
+ std::domain_error x(s);
+
+ VERIFY( std::strcmp(x.what(), s.data()) == 0 );
+}
+
+int main(void)
+{
+ test01();
+ test02();
+ return 0;
+}
--- /dev/null
+// 2001-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 19.1 Exception classes
+
+#include <string>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// libstdc++/2089
+class fuzzy_logic : public std::logic_error
+{
+public:
+ fuzzy_logic() : std::logic_error("whoa") { }
+};
+
+void test03()
+{
+ bool test __attribute__((unused)) = true;
+ try
+ { throw fuzzy_logic(); }
+ catch(const fuzzy_logic& obj)
+ { VERIFY( std::strcmp("whoa", obj.what()) == 0 ); }
+ catch(...)
+ { VERIFY( false ); }
+}
+
+int main(void)
+{
+ test03();
+ return 0;
+}
--- /dev/null
+// 2001-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 19.1 Exception classes
+
+#include <string>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// libstdc++/1972
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+ std::string s("lack of sunlight, no water error");
+
+ // 1
+ std::runtime_error obj1 = std::runtime_error(s);
+
+ // 2
+ std::runtime_error obj2(s);
+
+ VERIFY( std::strcmp(obj1.what(), s.data()) == 0 );
+ VERIFY( std::strcmp(obj2.what(), s.data()) == 0 );
+}
+
+void test02()
+{
+ bool test __attribute__((unused)) = true;
+ std::string s("lack of sunlight error");
+ std::range_error x(s);
+
+ VERIFY( std::strcmp(x.what(), s.data()) == 0 );
+}
+
+int main(void)
+{
+ test01();
+ test02();
+ return 0;
+}
--- /dev/null
+// 2001-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002, 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 19.1 Exception classes
+
+#include <string>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// libstdc++/2089
+class fuzzy_logic : public std::runtime_error
+{
+public:
+ fuzzy_logic() : std::runtime_error("whoa") { }
+};
+
+void test03()
+{
+ bool test __attribute__((unused)) = true;
+ try
+ { throw fuzzy_logic(); }
+ catch(const fuzzy_logic& obj)
+ { VERIFY( std::strcmp("whoa", obj.what()) == 0 ); }
+ catch(...)
+ { VERIFY( false ); }
+}
+
+int main(void)
+{
+ test03();
+ return 0;
+}
--- /dev/null
+// 2001-02-26 Benjamin Kosnik <bkoz@redhat.com>
+
+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 19.1 Exception classes
+
+#include <string>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+// test copy ctors and assignment operators
+// libstdc++/1972
+// via Greg Bumgardner <bumgard@roguewave.com>
+void allocate_on_stack(void)
+{
+ const size_t num = 512;
+ __extension__ char array[num];
+ for (size_t i = 0; i < num; i++)
+ array[i]=0;
+}
+void test04()
+{
+ bool test __attribute__((unused)) = true;
+ const std::string s("CA ISO emergency once again:immediate power down");
+ const char* strlit1 = "wish I lived in Palo Alto";
+ const char* strlit2 = "...or Santa Barbara";
+ std::runtime_error obj1(s);
+
+ // block 01
+ {
+ const std::string s2(strlit1);
+ std::runtime_error obj2(s2);
+ obj1 = obj2;
+ }
+ allocate_on_stack();
+ VERIFY( std::strcmp(strlit1, obj1.what()) == 0 );
+
+ // block 02
+ {
+ const std::string s3(strlit2);
+ std::runtime_error obj3 = std::runtime_error(s3);
+ obj1 = obj3;
+ }
+ allocate_on_stack();
+ VERIFY( std::strcmp(strlit2, obj1.what()) == 0 );
+}
+
+int main(void)
+{
+ test04();
+ return 0;
+}
+++ /dev/null
-// 2001-02-26 Benjamin Kosnik <bkoz@redhat.com>
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// 19.1 Exception classes
-
-#include <string>
-#include <cstring>
-#include <stdexcept>
-#include <testsuite_hooks.h>
-
-// libstdc++/1972
-void test01()
-{
- bool test __attribute__((unused)) = true;
- std::string s("lack of sunlight, no water error");
-
- // 1
- std::logic_error obj = std::logic_error(s);
-
- // 2
- // std::logic_error obj((std::string)strlit);
-
- VERIFY( std::strcmp(obj.what(), s.data()) == 0 );
-}
-
-void test02()
-{
- bool test __attribute__((unused)) = true;
- std::string s("lack of sunlight error");
- std::domain_error x(s);
-
- VERIFY( std::strcmp(x.what(), s.data()) == 0 );
-}
-
-// libstdc++/2089
-class fuzzy_logic : public std::logic_error
-{
-public:
- fuzzy_logic() : std::logic_error("whoa") { }
-};
-
-void test03()
-{
- bool test __attribute__((unused)) = true;
- try
- { throw fuzzy_logic(); }
- catch(const fuzzy_logic& obj)
- { VERIFY( std::strcmp("whoa", obj.what()) == 0 ); }
- catch(...)
- { VERIFY( false ); }
-}
-
-// test copy ctors and assignment operators
-// libstdc++/1972
-// via Greg Bumgardner <bumgard@roguewave.com>
-void allocate_on_stack(void)
-{
- const size_t num = 512;
- __extension__ char array[num];
- for (size_t i = 0; i < num; i++)
- array[i]=0;
-}
-void test04()
-{
- bool test __attribute__((unused)) = true;
- const std::string s("CA ISO emergency once again:immediate power down");
- const char* strlit1 = "wish I lived in Palo Alto";
- const char* strlit2 = "...or Santa Barbara";
- std::runtime_error obj1(s);
-
- // block 01
- {
- const std::string s2(strlit1);
- std::runtime_error obj2(s2);
- obj1 = obj2;
- }
- allocate_on_stack();
- VERIFY( std::strcmp(strlit1, obj1.what()) == 0 );
-
- // block 02
- {
- const std::string s3(strlit2);
- std::runtime_error obj3 = std::runtime_error(s3);
- obj1 = obj3;
- }
- allocate_on_stack();
- VERIFY( std::strcmp(strlit2, obj1.what()) == 0 );
-}
-
-int main(void)
-{
- test01();
- test02();
- test03();
- test04();
-
- return 0;
-}