From: "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu>
To: gdr@integrable-solutions.net
Cc: gcc-patches@gcc.gnu.org, gcc@gcc.gnu.org, libstdc++@gcc.gnu.org
Subject: Re: Analysis of solaris2 27_io/istream_extractor_arith.cc failures
Date: Thu, 26 Dec 2002 21:56:00 -0000 [thread overview]
Message-ID: <200212261708.MAA10791@caip.rutgers.edu> (raw)
In-Reply-To: <m3adiszvb6.fsf@uniton.integrable-solutions.net>
> From: Gabriel Dos Reis <gdr@integrable-solutions.net>
>
> "Kaveh R. Ghazi" <ghazi@caip.rutgers.edu> writes:
>
> [...]
>
> | Patch to follow after some testing. Any suggestions for the name of
> | the new split out file? Using istream_extractor_arith2 didn't seem
> | very descriptive.
>
> Well, I'm not sure we will come up with a naming scheme that is
> a) sensical, i.e. descriptive;
> b) matches standard description. i.e. the paragraph in the Standard;
> specificationp;
> c) scalable;
> d) easy to use.
>
> I suspect that, somehow, we will end up with numbers. Therefore I
> would suggest the testcases be named after the title of the
> paragraphes that describe them in the C++ definition text. I know
> Benjamin is skeptical about numbering, so I would appreciate to have
> his input on this suggestion.
> -- Gaby
Sure, whatever you guys agree on is fine with me.
Here's the patch. I tested it via make check against 3.2.x
libstdc++-v3 on sparc-solaris2.7. Unexpected failures are gone.
Ok to install everywhere? (Modulo any filename changes of course.)
Thanks,
--Kaveh
2002-12-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* testsuite/27_io/istream_extractor_arith.cc (test12): Move to ...
* testsuite/27_io/istream_extractor_arith2.cc: ... here, new file.
diff -rup orig/egcc-CVS20021224/libstdc++-v3/testsuite/27_io/istream_extractor_arith.cc egcc-CVS20021224/libstdc++-v3/testsuite/27_io/istream_extractor_arith.cc
--- orig/egcc-CVS20021224/libstdc++-v3/testsuite/27_io/istream_extractor_arith.cc 2002-06-21 16:23:51.000000000 -0400
+++ egcc-CVS20021224/libstdc++-v3/testsuite/27_io/istream_extractor_arith.cc 2002-12-25 20:54:13.300925000 -0500
@@ -513,45 +513,6 @@ bool test11()
return test;
}
-// libstdc++/3720
-// excess input should not cause a core dump
-template<typename T>
-bool test12_aux(bool integer_type)
-{
- bool test = true;
-
- int digits_overflow;
- if (integer_type)
- // This many digits will overflow integer types in base 10.
- digits_overflow = std::numeric_limits<T>::digits10 + 2;
- else
- // This might do it, unsure.
- digits_overflow = std::numeric_limits<T>::max_exponent10 + 1;
-
- std::string st;
- std::string part = "1234567890123456789012345678901234567890";
- for (int i = 0; i < digits_overflow / part.size() + 1; ++i)
- st += part;
- std::stringbuf sb(st);
- std::istream is(&sb);
- T t;
- is >> t;
- VERIFY(is.fail());
- return test;
-}
-
-bool test12()
-{
- bool test = true;
- VERIFY(test12_aux<short>(true));
- VERIFY(test12_aux<int>(true));
- VERIFY(test12_aux<long>(true));
- VERIFY(test12_aux<float>(false));
- VERIFY(test12_aux<double>(false));
- VERIFY(test12_aux<long double>(false));
- return test;
-}
-
// libstdc++/3720 part two
void test13()
{
@@ -603,7 +564,6 @@ int main()
test10();
test11();
- test12();
test13();
return 0;
}
diff -rup orig/egcc-CVS20021224/libstdc++-v3/testsuite/27_io/istream_extractor_arith2.cc egcc-CVS20021224/libstdc++-v3/testsuite/27_io/istream_extractor_arith2.cc
--- orig/egcc-CVS20021224/libstdc++-v3/testsuite/27_io/istream_extractor_arith2.cc 2002-12-25 21:11:35.330796000 -0500
+++ egcc-CVS20021224/libstdc++-v3/testsuite/27_io/istream_extractor_arith2.cc 2002-12-25 21:03:10.979095000 -0500
@@ -0,0 +1,74 @@
+// 1999-04-12 bkoz
+
+// Copyright (C) 1999, 2000, 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// 27.6.1.2.2 arithmetic extractors
+
+// XXX This test fails on sparc-solaris2 because of a bug in libc
+// XXX sscanf for very long input. See:
+// XXX http://gcc.gnu.org/ml/gcc/2002-12/msg01422.html
+// { dg-do run { xfail sparc*-*-solaris2* } }
+
+#include <sstream>
+#include <testsuite_hooks.h>
+
+// libstdc++/3720
+// excess input should not cause a core dump
+template<typename T>
+bool test12_aux(bool integer_type)
+{
+ bool test = true;
+
+ int digits_overflow;
+ if (integer_type)
+ // This many digits will overflow integer types in base 10.
+ digits_overflow = std::numeric_limits<T>::digits10 + 2;
+ else
+ // This might do it, unsure.
+ digits_overflow = std::numeric_limits<T>::max_exponent10 + 1;
+
+ std::string st;
+ std::string part = "1234567890123456789012345678901234567890";
+ for (int i = 0; i < digits_overflow / part.size() + 1; ++i)
+ st += part;
+ std::stringbuf sb(st);
+ std::istream is(&sb);
+ T t;
+ is >> t;
+ VERIFY(is.fail());
+ return test;
+}
+
+bool test12()
+{
+ bool test = true;
+ VERIFY(test12_aux<short>(true));
+ VERIFY(test12_aux<int>(true));
+ VERIFY(test12_aux<long>(true));
+ VERIFY(test12_aux<float>(false));
+ VERIFY(test12_aux<double>(false));
+ VERIFY(test12_aux<long double>(false));
+ return test;
+}
+
+int main()
+{
+ test12();
+ return 0;
+}
next prev parent reply other threads:[~2002-12-26 17:09 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-26 17:51 Kaveh R. Ghazi
2002-12-26 19:16 ` Gabriel Dos Reis
2002-12-26 21:56 ` Kaveh R. Ghazi [this message]
2003-01-04 14:56 ` Kaveh R. Ghazi
2003-01-05 1:55 ` Benjamin Kosnik
2003-01-05 2:18 ` Gabriel Dos Reis
2003-01-05 4:57 ` Benjamin Kosnik
2003-01-05 6:31 ` Kaveh R. Ghazi
2003-01-05 11:19 ` Phil Edwards
2003-01-05 19:36 ` Kaveh R. Ghazi
2003-01-06 4:38 ` Kaveh R. Ghazi
2003-01-06 5:18 ` Benjamin Kosnik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200212261708.MAA10791@caip.rutgers.edu \
--to=ghazi@caip.rutgers.edu \
--cc=gcc-patches@gcc.gnu.org \
--cc=gcc@gcc.gnu.org \
--cc=gdr@integrable-solutions.net \
--cc=libstdc++@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).