aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2009-07-24 21:55:59 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2009-07-24 21:55:59 +0100
commit2e0814c8d67b6a80fc68cfefd90865bc4e2b87ec (patch)
tree5030e0493f9aa91365ecaa2155549e136cc3008d
parent87da38430a7bc90b7363a846f547aae17d43b479 (diff)
downloadgcc-2e0814c8d67b6a80fc68cfefd90865bc4e2b87ec.zip
gcc-2e0814c8d67b6a80fc68cfefd90865bc4e2b87ec.tar.gz
gcc-2e0814c8d67b6a80fc68cfefd90865bc4e2b87ec.tar.bz2
cwchar (swprintf, vswprintf): Do not use if _GLIBCXX_HAVE_BROKEN_VSWPRINTF.
* include/c_global/cwchar (swprintf, vswprintf): Do not use if _GLIBCXX_HAVE_BROKEN_VSWPRINTF. * testsuite/lib/libstdc++.exp (check_v3_target_swprintf): New. * testsuite/lib/dg-options.exp (dg-require-swprintf): New. * testsuite/21_strings/headers/cwchar/functions_std.cc, testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc, testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc: Use dg-require-swprintf. From-SVN: r150063
-rw-r--r--libstdc++-v3/ChangeLog11
-rw-r--r--libstdc++-v3/include/c_global/cwchar4
-rw-r--r--libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc2
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc1
-rw-r--r--libstdc++-v3/testsuite/lib/dg-options.exp9
-rw-r--r--libstdc++-v3/testsuite/lib/libstdc++.exp58
7 files changed, 86 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 060a82e..a89a4a6 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,14 @@
+2009-07-24 Joseph Myers <joseph@codesourcery.com>
+
+ * include/c_global/cwchar (swprintf, vswprintf): Do not use if
+ _GLIBCXX_HAVE_BROKEN_VSWPRINTF.
+ * testsuite/lib/libstdc++.exp (check_v3_target_swprintf): New.
+ * testsuite/lib/dg-options.exp (dg-require-swprintf): New.
+ * testsuite/21_strings/headers/cwchar/functions_std.cc,
+ testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc,
+ testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc:
+ Use dg-require-swprintf.
+
2009-07-24 Paolo Carlini <paolo.carlini@oracle.com>
* testsuite/26_numerics/valarray/dr630-2.cc: Extend.
diff --git a/libstdc++-v3/include/c_global/cwchar b/libstdc++-v3/include/c_global/cwchar
index 14de5c4..f7f07c3 100644
--- a/libstdc++-v3/include/c_global/cwchar
+++ b/libstdc++-v3/include/c_global/cwchar
@@ -156,14 +156,18 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
using ::mbsrtowcs;
using ::putwc;
using ::putwchar;
+#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
using ::swprintf;
+#endif
using ::swscanf;
using ::ungetwc;
using ::vfwprintf;
#if _GLIBCXX_HAVE_VFWSCANF
using ::vfwscanf;
#endif
+#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF
using ::vswprintf;
+#endif
#if _GLIBCXX_HAVE_VSWSCANF
using ::vswscanf;
#endif
diff --git a/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc b/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
index d309d43..e1de06d 100644
--- a/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
+++ b/libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
@@ -1,5 +1,6 @@
// { dg-do compile }
// { dg-require-c-std "" }
+// { dg-require-swprintf "" }
// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
//
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
index bf891fa..54b339e 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
@@ -1,3 +1,5 @@
+// { dg-require-swprintf "" }
+
// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
index 6d7e9d1..5df2990 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
@@ -1,4 +1,5 @@
// { dg-options "-std=gnu++0x" }
+// { dg-require-swprintf "" }
// Copyright (C) 2007, 2008, 2009 Free Software Foundation
//
diff --git a/libstdc++-v3/testsuite/lib/dg-options.exp b/libstdc++-v3/testsuite/lib/dg-options.exp
index ed7988d..6e8f74b 100644
--- a/libstdc++-v3/testsuite/lib/dg-options.exp
+++ b/libstdc++-v3/testsuite/lib/dg-options.exp
@@ -142,3 +142,12 @@ proc dg-require-string-conversions { args } {
}
return
}
+
+proc dg-require-swprintf { args } {
+ if { ![ check_v3_target_swprintf ] } {
+ upvar dg-do-what dg-do-what
+ set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
+ return
+ }
+ return
+}
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index 45e92d7..eb15777 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -1374,3 +1374,61 @@ proc check_v3_target_string_conversions { } {
verbose "check_v3_target_string_conversions: $et_string_conversions" 2
return $et_string_conversions
}
+
+proc check_v3_target_swprintf { } {
+ global cxxflags
+ global DEFAULT_CXXFLAGS
+ global et_swprintf
+
+ global tool
+
+ if { ![info exists et_swprintf_target_name] } {
+ set et_swprintf_target_name ""
+ }
+
+ # If the target has changed since we set the cached value, clear it.
+ set current_target [current_target_name]
+ if { $current_target != $et_swprintf_target_name } {
+ verbose "check_v3_target_swprintf: `$et_swprintf_target_name'" 2
+ set et_swprintf_target_name $current_target
+ if [info exists et_swprintf] {
+ verbose "check_v3_target_swprintf: removing cached result" 2
+ unset et_swprintf
+ }
+ }
+
+ if [info exists et_swprintf] {
+ verbose "check_v3_target_swprintf: using cached result" 2
+ } else {
+ set et_swprintf 0
+
+ # Set up and compile a C++0x test program that depends
+ # on a standard swprintf function to be available.
+ set src swprintf[pid].cc
+ set exe swprintf[pid].exe
+
+ set f [open $src "w"]
+ puts $f "#include <bits/c++config.h>"
+ puts $f "int main()"
+ puts $f "#if !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)"
+ puts $f "{ return 0; }"
+ puts $f "#endif"
+ close $f
+
+ set cxxflags_saved $cxxflags
+ set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
+
+ set lines [v3_target_compile $src $exe executable ""]
+ set cxxflags $cxxflags_saved
+ file delete $src
+
+ if [string match "" $lines] {
+ # No error message, compilation succeeded.
+ set et_swprintf 1
+ } else {
+ verbose "check_v3_target_swprintf: compilation failed" 2
+ }
+ }
+ verbose "check_v3_target_swprintf: $et_swprintf" 2
+ return $et_swprintf
+}