Hi, this patch addresses some of libstdc++'s testsuite regressions on pe-coff targets due none-overridable symbols in DLL files. ChangeLog
* 18_support/50594.cc: Force use of static libstdc++ for mingw targets. * 19_diagnostics/error_category/operators/equal.cc: Likewise. * 19_diagnostics/error_code/cons/1.cc: Likewise. * 19_diagnostics/error_code/operators/bool.cc: Likewise. * 19_diagnostics/error_code/operators/equal.cc: Likewise. * 19_diagnostics/error_condition/cons/1.cc: Likewise. * 19_diagnostics/error_condition/operators/bool.cc: Likewise. * 19_diagnostics/error_condition/operators/equal.cc: Likewise. * 19_diagnostics/error_condition/operators/not_equal.cc: Likewise. * 23_containers/set/requirements/exception/basic.cc: Likewise. * lib/dg-options.exp (dg-additional-options): Likewise. * 26_numerics/headers/cmath/c99_classification_macros_c.cc: Add mingw targets as known to fail. Tested for x86_64-w64-mingw32, i686-w64-mingw32, and x86_64-unknown-linux-gnu. Ok for apply? Regards, Kai Index: testsuite/18_support/50594.cc =================================================================== --- testsuite/18_support/50594.cc (Revision 195288) +++ testsuite/18_support/50594.cc (Arbeitskopie) @@ -1,4 +1,5 @@ // { dg-options "-fwhole-program" } +// { dg-additional-options "-static-libstdc++" { target *-*-mingw* } } // Copyright (C) 2011 Free Software Foundation // Index: testsuite/19_diagnostics/error_category/operators/equal.cc =================================================================== --- testsuite/19_diagnostics/error_category/operators/equal.cc (Revision 195288) +++ testsuite/19_diagnostics/error_category/operators/equal.cc (Arbeitskopie) @@ -1,4 +1,5 @@ // { dg-options "-std=gnu++0x" } +// { dg-additional-options "-static-libgcc" { target *-*-mingw* } } // 2007-08-22 Benjamin Kosnik <b...@redhat.com> // Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. Index: testsuite/19_diagnostics/error_code/cons/1.cc =================================================================== --- testsuite/19_diagnostics/error_code/cons/1.cc (Revision 195288) +++ testsuite/19_diagnostics/error_code/cons/1.cc (Arbeitskopie) @@ -1,4 +1,5 @@ // { dg-options "-std=gnu++0x" } +// { dg-additional-options "-static-libstdc++" { target *-*-mingw* } } // 2007-08-22 Benjamin Kosnik <b...@redhat.com> // Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. Index: testsuite/19_diagnostics/error_code/operators/bool.cc =================================================================== --- testsuite/19_diagnostics/error_code/operators/bool.cc (Revision 195288) +++ testsuite/19_diagnostics/error_code/operators/bool.cc (Arbeitskopie) @@ -1,4 +1,5 @@ // { dg-options "-std=gnu++0x" } +// { dg-additional-options "-static-libstdc++" { target *-*-mingw* } } // 2007-08-22 Benjamin Kosnik <b...@redhat.com> // Copyright (C) 2007, 2009 Free Software Foundation, Inc. Index: testsuite/19_diagnostics/error_code/operators/equal.cc =================================================================== --- testsuite/19_diagnostics/error_code/operators/equal.cc (Revision 195288) +++ testsuite/19_diagnostics/error_code/operators/equal.cc (Arbeitskopie) @@ -1,4 +1,5 @@ // { dg-options "-std=gnu++0x" } +// { dg-additional-options "-static-libstdc++" { target *-*-mingw* } } // 2007-08-22 Benjamin Kosnik <b...@redhat.com> // Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. Index: testsuite/19_diagnostics/error_code/operators/not_equal.cc =================================================================== --- testsuite/19_diagnostics/error_code/operators/not_equal.cc (Revision 195288) +++ testsuite/19_diagnostics/error_code/operators/not_equal.cc (Arbeitskopie) @@ -1,4 +1,5 @@ // { dg-options "-std=gnu++0x" } +// { dg-additional-options "-static-libstdc++" { target *-*-mingw* } } // 2007-08-22 Benjamin Kosnik <b...@redhat.com> // Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. Index: testsuite/19_diagnostics/error_condition/cons/1.cc =================================================================== --- testsuite/19_diagnostics/error_condition/cons/1.cc (Revision 195288) +++ testsuite/19_diagnostics/error_condition/cons/1.cc (Arbeitskopie) @@ -1,4 +1,5 @@ // { dg-options "-std=gnu++0x" } +// { dg-additional-options "-static-libstdc++" { target *-*-mingw* } } // Copyright (C) 2008, 2009 Free Software Foundation, Inc. // Index: testsuite/19_diagnostics/error_condition/operators/bool.cc =================================================================== --- testsuite/19_diagnostics/error_condition/operators/bool.cc (Revision 195288) +++ testsuite/19_diagnostics/error_condition/operators/bool.cc (Arbeitskopie) @@ -1,4 +1,5 @@ // { dg-options "-std=gnu++0x" } +// { dg-additional-options "-static-libstdc++" { target *-*-mingw* } } // Copyright (C) 2008, 2009 Free Software Foundation, Inc. // Index: testsuite/19_diagnostics/error_condition/operators/equal.cc =================================================================== --- testsuite/19_diagnostics/error_condition/operators/equal.cc (Revision 195288) +++ testsuite/19_diagnostics/error_condition/operators/equal.cc (Arbeitskopie) @@ -1,4 +1,5 @@ // { dg-options "-std=gnu++0x" } +// { dg-additional-options "-static-libstdc++" { target *-*-mingw* } } // Copyright (C) 2008, 2009 Free Software Foundation, Inc. // Index: testsuite/19_diagnostics/error_condition/operators/not_equal.cc =================================================================== --- testsuite/19_diagnostics/error_condition/operators/not_equal.cc (Revision 195288) +++ testsuite/19_diagnostics/error_condition/operators/not_equal.cc (Arbeitskopie) @@ -1,4 +1,5 @@ // { dg-options "-std=gnu++0x" } +// { dg-additional-options "-static-libstdc++" { target *-*-mingw* } } // Copyright (C) 2008, 2009 Free Software Foundation, Inc. // Index: testsuite/23_containers/set/requirements/exception/basic.cc =================================================================== --- testsuite/23_containers/set/requirements/exception/basic.cc (Revision 195288) +++ testsuite/23_containers/set/requirements/exception/basic.cc (Arbeitskopie) @@ -1,4 +1,5 @@ // { dg-options "-std=gnu++0x" } +// { dg-additional-options "-static-libstdc++" { target *-*-mingw* } } // { dg-require-cstdint "" } // 2009-11-30 Benjamin Kosnik <benja...@redhat.com> Index: testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc =================================================================== --- testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc (Revision 195288) +++ testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc (Arbeitskopie) @@ -20,8 +20,8 @@ // { dg-do compile } // { dg-add-options no_pch } -// { dg-xfail-if "" { { *-*-linux* *-*-darwin* *-*-solaris2.1[0-9]* hppa*-*-hpux* } || { uclibc || newlib } } { "*" } { "" } } -// { dg-excess-errors "" { target { { *-*-linux* *-*-darwin* *-*-solaris2.1[0-9]* hppa*-*-hpux* } || { uclibc || newlib } } } } +// { dg-xfail-if "" { { *-*-linux* *-*-darwin* *-*-solaris2.1[0-9]* hppa*-*-hpux* *-*-mingw* } || { uclibc || newlib } } { "*" } { "" } } +// { dg-excess-errors "" { target { { *-*-linux* *-*-darwin* *-*-solaris2.1[0-9]* hppa*-*-hpux* *-*-mingw* } || { uclibc || newlib } } } } #include <math.h> Index: testsuite/lib/dg-options.exp =================================================================== --- testsuite/lib/dg-options.exp (Revision 195288) +++ testsuite/lib/dg-options.exp (Arbeitskopie) @@ -219,3 +219,25 @@ proc add_options_for_no_pch { flags } { # This forces any generated and possibly included PCH to be invalid. return "-D__GLIBCXX__=99999999" } + +# Like dg-options, but adds to the default options rather than replacing them. + +proc dg-additional-options { args } { + upvar dg-extra-tool-flags extra-tool-flags + + if { [llength $args] > 3 } { + error "[lindex $args 0]: too many arguments" + return + } + + if { [llength $args] >= 3 } { + switch [dg-process-target [lindex $args 2]] { + "S" { eval lappend extra-tool-flags [lindex $args 1] } + "N" { } + "F" { error "[lindex $args 0]: `xfail' not allowed here" } + "P" { error "[lindex $args 0]: `xfail' not allowed here" } + } + } else { + eval lappend extra-tool-flags [lindex $args 1] + } +}