This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: vector_capacity:test03() failing on mips-irix6


 > From: Benjamin Kosnik <bkoz@redhat.com>
 > 
 > >I'd like to know whether there is any way to pass -lmalloc to these
 > >two tests just for irix6.  Failing that, what options are available to
 > >XFAIL just test03 (not the whole file) on irix6?
 > 
 > If you'd like you can take test03 and make it
 > 23_containers/vector_resize, and XFAIL if for irix6 and newlib crosses.
 > -benjamin

Rather than XFAIL it, I split the file as you suggested and passed in
-lmalloc via dg-options.  I also added -lmalloc to ios_base_storage.cc.

Tested against 3.2.x CVS on mips-irix6.2 and mips-irix6.5 by rerunning
the testsuite.  The testcases now pass.  I also tested it on
sparc-solaris2.7 to make sure that the !irix6 case still works too.

Note, I didn't xfail the newlib crosses since I don't really know the
targets, and second I don't see any evidence that the failures there
were investigated.  I doubt that they stem from the same cause as the
irix6 problem since that's an issue with the vendor's libc malloc.
However whoever is interested in these targets can easily add the
appropriate dg magic since I did split out the testcase into a
separate file.

Ok to install everywhere?

		Thanks,
		--Kaveh


2002-12-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* testsuite/23_containers/vector_capacity.cc (test03): Move ...
	* testsuite/23_containers/vector_resize.cc: ...here as a new file.
	Pass in -lmalloc for irix6.
	* testsuite/27_io/ios_base_storage.cc: Pass in -lmalloc for irix6.

diff -N -rup orig/egcc-3.2-CVS20021213/libstdc++-v3/testsuite/23_containers/vector_capacity.cc egcc-3.2-CVS20021213/libstdc++-v3/testsuite/23_containers/vector_capacity.cc
--- orig/egcc-3.2-CVS20021213/libstdc++-v3/testsuite/23_containers/vector_capacity.cc	Thu Dec  5 21:34:22 2002
+++ egcc-3.2-CVS20021213/libstdc++-v3/testsuite/23_containers/vector_capacity.cc	Sat Dec 14 09:58:45 2002
@@ -99,30 +99,9 @@ void test02()
   }
 }
 
-void test03()
-{
-  bool test = true;
-  std::vector<int> v;
-  try
-    {
-      v.resize(v.max_size());  
-      v[v.max_size() - 1] = 2002;
-    }
-  catch (const std::bad_alloc& error)
-    {
-      test = true;
-    }
-  catch (...)
-    {
-      test = false;
-    }
-  VERIFY( test );
-}
-
 int main()
 {
   test01();
   test02();
-  test03();
   return 0;
 }
diff -N -rup orig/egcc-3.2-CVS20021213/libstdc++-v3/testsuite/23_containers/vector_resize.cc egcc-3.2-CVS20021213/libstdc++-v3/testsuite/23_containers/vector_resize.cc
--- orig/egcc-3.2-CVS20021213/libstdc++-v3/testsuite/23_containers/vector_resize.cc	Wed Dec 31 19:00:00 1969
+++ egcc-3.2-CVS20021213/libstdc++-v3/testsuite/23_containers/vector_resize.cc	Sat Dec 14 09:58:45 2002
@@ -0,0 +1,57 @@
+// 1999-05-07
+// bkoz 
+
+// Copyright (C) 1999, 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.
+
+// 23.2.4.2 vector capacity
+
+// XXX This test will not work for irix6 because of bug(s) in libc malloc
+// XXX for very large allocations.  However -lmalloc seems to work.
+// See http://gcc.gnu.org/ml/libstdc++/2002-12/msg00131.html
+// { dg-options "-lmalloc" { target mips*-*-irix6* } }
+
+#include <vector>
+#include <stdexcept>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+  bool test = true;
+  std::vector<int> v;
+  try
+    {
+      v.resize(v.max_size());  
+      v[v.max_size() - 1] = 2002;
+    }
+  catch (const std::bad_alloc& error)
+    {
+      test = true;
+    }
+  catch (...)
+    {
+      test = false;
+    }
+  VERIFY( test );
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff -N -rup orig/egcc-3.2-CVS20021213/libstdc++-v3/testsuite/27_io/ios_base_storage.cc egcc-3.2-CVS20021213/libstdc++-v3/testsuite/27_io/ios_base_storage.cc
--- orig/egcc-3.2-CVS20021213/libstdc++-v3/testsuite/27_io/ios_base_storage.cc	Tue Apr 30 04:27:20 2002
+++ egcc-3.2-CVS20021213/libstdc++-v3/testsuite/27_io/ios_base_storage.cc	Sat Dec 14 10:01:51 2002
@@ -20,6 +20,12 @@
 
 // 27.4.2.5 ios_base storage functions
 
+// XXX This test will not work for some versions of irix6 because of
+// XXX bug(s) in libc malloc for very large allocations.  However
+// XXX -lmalloc seems to work.
+// See http://gcc.gnu.org/ml/gcc/2002-05/msg01012.html
+// { dg-options "-lmalloc" { target mips*-*-irix6* } }
+
 #include <sstream>
 #include <iostream>
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]