Patchwork [libstdc++] : Fix tests trying to override symbols in shared-library for mingw targets

login
register
mail settings
Submitter Kai Tietz
Date Jan. 18, 2013, 10:17 a.m.
Message ID <CAEwic4b-eauMUgi0kvMPYP06pC6Uko7SaSbsYKs7_nJUf+620g@mail.gmail.com>
Download mbox | patch
Permalink /patch/213556/
State New
Headers show

Comments

Kai Tietz - Jan. 18, 2013, 10:17 a.m.
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
Jonathan Wakely - Jan. 18, 2013, 11:23 a.m.
On 18 January 2013 10:17, Kai Tietz wrote:
> 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?

Congratulations, you're the first person to touch these files this
year, so you win the privilege of updating the copyright years!  ;-)

(Don't forget that on the trunk now you can replace a series of dates
like 2008, 2009, 2011 with the range 2008-2013.)

> 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 } {

Is this condition right or should it check for exactly three?

> +        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]
> +    }
> +}
Kai Tietz - Jan. 18, 2013, 12:09 p.m.
2013/1/18 Jonathan Wakely <jwakely.gcc@gmail.com>:
> On 18 January 2013 10:17, Kai Tietz wrote:
>> 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?
>
> Congratulations, you're the first person to touch these files this
> year, so you win the privilege of updating the copyright years!  ;-)

Oh lucky I am, I am winner! .... ;)

> (Don't forget that on the trunk now you can replace a series of dates
> like 2008, 2009, 2011 with the range 2008-2013.)

Sure I will modify the copyright-notice of the files I've touched here.

>> 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 } {
>
> Is this condition right or should it check for exactly three?

Well, I copied stuff from gcc's testsuite.  As we check some lines
about for args > 3 and error out, a test for == 3 makes sense, but
well, >= 3 is fine too.

>> +        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]
>> +    }
>> +}
Jonathan Wakely - Jan. 18, 2013, 1:07 p.m.
On 18 January 2013 12:09, Kai Tietz wrote:
>>> +
>>> +    if { [llength $args] >= 3 } {
>>
>> Is this condition right or should it check for exactly three?
>
> Well, I copied stuff from gcc's testsuite.  As we check some lines
> about for args > 3 and error out, a test for == 3 makes sense, but
> well, >= 3 is fine too.

Ah OK, it's fine as it is then.

Thanks again.

Patch

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  <bkoz@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  <bkoz@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  <bkoz@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  <bkoz@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  <bkoz@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  <benjamin@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]
+    }
+}