Patchwork libstdc++.exp patch

login
register
mail settings
Submitter François Dumont
Date April 22, 2011, 7:54 p.m.
Message ID <4DB1DCD9.6090907@free.fr>
Download mbox | patch
Permalink /patch/92574/
State New
Headers show

Comments

François Dumont - April 22, 2011, 7:54 p.m.
Attached patch applied.

2011-04-21  François Dumont <francois.cppdevs@free.fr>

         * testsuite/lib/libstdc++.exp (check_v3_target_time): Discard
         unused compilation result thanks to /dev/null.
         * testsuite/lib/libstdc++.exp (check_v3_target_debug_mode
         check_v3_target_profile_mode check_v3_target_normal_mode
         check_v3_target_cstdint check_v3_target_cmath
         check_v3_target_atomic_builtins check_v3_target_gthreads
         check_v3_target_nanosleep check_v3_target_sched_yield
         check_v3_target_string_conversions check_v3_target_swprintf
         check_v3_target_binary_io): Use simple preprocessing rather than
         compilation. Discard unused preprocessing result thanks to 
/dev/null.

I kept check_v3_target_time execution target for the moment, I check 
that it is used within tests. Do not hesitate to signal an issue Ralf.

Regards

On 04/22/2011 05:06 PM, Paolo Carlini wrote:
> Hi,
>>
>>     Here is the patch I submitted some months ago before 4.6.0 release.
>>
>>
>>     My only concern regarding this patch is on the portability of 
>> /dev/null.
> I would say it's Ok: in acinclude.m4 we have quite a few of /dev/null 
> and nobody complained so far. I'm adding Ralf in CC, I trust his 
> opinion about portability issues (in particular ;)
>> I also wonder if check_v3_target_time could not simply use the object 
>> or even assembly target rather than executable, what do you think ?
> Can you figure out when / why it has been added? Because that function 
> is C89 and should be unconditionally available. If we have the test, 
> likely it's because of some target I'm not familiar with, which can 
> well declare time it in <time.h> and then end up not providing it in 
> the library, thus the failure happens at *link* time... (would not be 
> the fist time we have to live with this kind of annoying situation)
>
> Paolo.
>
Rainer Orth - April 26, 2011, 8:59 a.m.
François Dumont <francois.cppdevs@free.fr> writes:

> Attached patch applied.
>
> 2011-04-21  François Dumont <francois.cppdevs@free.fr>
>
>         * testsuite/lib/libstdc++.exp (check_v3_target_time): Discard
>         unused compilation result thanks to /dev/null.
>         * testsuite/lib/libstdc++.exp (check_v3_target_debug_mode
>         check_v3_target_profile_mode check_v3_target_normal_mode
>         check_v3_target_cstdint check_v3_target_cmath
>         check_v3_target_atomic_builtins check_v3_target_gthreads
>         check_v3_target_nanosleep check_v3_target_sched_yield
>         check_v3_target_string_conversions check_v3_target_swprintf
>         check_v3_target_binary_io): Use simple preprocessing rather than
>         compilation. Discard unused preprocessing result thanks to
> /dev/null.

Please separate the proc names by commas in the ChangeLog.

Thanks.
	Rainer
Paolo Carlini - April 26, 2011, 10:34 a.m.
On 04/26/2011 10:59 AM, Rainer Orth wrote:
> Please separate the proc names by commas in the ChangeLog.
Indeed. I took care of this.

Paolo.

Patch

Index: testsuite/lib/libstdc++.exp
===================================================================
--- testsuite/lib/libstdc++.exp	(revision 172870)
+++ testsuite/lib/libstdc++.exp	(working copy)
@@ -824,7 +824,6 @@ 
 	# Set up and compile a C++ test program that tries to use
 	# the time function
 	set src time[pid].cc
-	set exe time[pid].x
 
 	set f [open $src "w"]
 	puts $f "#include <time.h>"
@@ -835,13 +834,12 @@ 
 	puts $f "}" 
 	close $f
 
-	set lines [v3_target_compile $src $exe executable ""]
+	set lines [v3_target_compile $src /dev/null executable ""]
 	file delete $src
 
 	if [string match "" $lines] {
 	    # No error message, compilation succeeded.
 	    verbose "check_v3_target_time: compilation succeeded" 2
-	    remote_file build delete $exe
 	    set et_time_saved 1
 	} else {
 	    verbose "check_v3_target_time: compilation failed" 2
@@ -927,25 +925,21 @@ 
     } else {
 	set et_debug_mode 0
 
-	# Set up and compile a C++ test program that depends
+	# Set up and preprocess a C++ test program that depends
 	# on debug mode activated.
 	set src debug_mode[pid].cc
-	set exe debug_mode[pid].exe
 
 	set f [open $src "w"]
 	puts $f "#ifndef _GLIBCXX_DEBUG"
 	puts $f "#  error No debug mode"
 	puts $f "#endif"
-	puts $f "int main()"
-	puts $f "{ return 0; }"
 	close $f
 
-	set lines [v3_target_compile $src $exe executable ""]
+	set lines [v3_target_compile $src /dev/null preprocess ""]
 	file delete $src
 
 	if [string match "" $lines] {
-	    # No error message, compilation succeeded.
-	    remote_file build delete $exe
+	    # No error message, preprocessing succeeded.
 	    set et_debug_mode 1
 	}
     }
@@ -977,25 +971,21 @@ 
     } else {
 	set et_profile_mode 0
 
-	# Set up and compile a C++ test program that depends
+	# Set up and preprocess a C++ test program that depends
 	# on profile mode activated.
 	set src profile_mode[pid].cc
-	set exe profile_mode[pid].exe
 
 	set f [open $src "w"]
 	puts $f "#ifndef _GLIBCXX_PROFILE"
 	puts $f "#  error No profile mode"
 	puts $f "#endif"
-	puts $f "int main()"
-	puts $f "{ return 0; }"
 	close $f
 
-	set lines [v3_target_compile $src $exe executable ""]
+	set lines [v3_target_compile $src /dev/null preprocess ""]
 	file delete $src
 
 	if [string match "" $lines] {
-	    # No error message, compilation succeeded.
-	    remote_file build delete $exe
+	    # No error message, preprocessing succeeded.
 	    set et_profile_mode 1
 	}
     }
@@ -1030,17 +1020,14 @@ 
 	# Set up and compile a C++ test program that depends
 	# on normal mode activated.
 	set src normal_mode[pid].cc
-	set exe normal_mode[pid].exe
 
 	set f [open $src "w"]
 	puts $f "#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) || defined(_GLIBCXX_PARALLEL)"
 	puts $f "#  error No normal mode"
 	puts $f "#endif"
-	puts $f "int main()"
-	puts $f "{ return 0; }"
 	close $f
 
-	set lines [v3_target_compile $src $exe executable ""]
+	set lines [v3_target_compile $src /dev/null preprocess ""]
 	file delete $src
 
 	if [string match "" $lines] {
@@ -1115,28 +1102,26 @@ 
     } else {
 	set et_cstdint 0
 
-	# Set up and compile a C++0x test program that depends
+	# Set up and preprocess a C++0x test program that depends
 	# on the C99 stdint facilities to be available.
 	set src cstdint[pid].cc
-	set exe cstdint[pid].exe
 
 	set f [open $src "w"]
 	puts $f "#include <tr1/cstdint>"
-	puts $f "int main()"
-	puts $f "#ifdef _GLIBCXX_USE_C99_STDINT_TR1"
-	puts $f "{ return 0; }"
+	puts $f "#ifndef _GLIBCXX_USE_C99_STDINT_TR1"
+	puts $f "#  error No C99 stdint"
 	puts $f "#endif"
 	close $f
 
 	set cxxflags_saved $cxxflags
 	set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
 
-	set lines [v3_target_compile $src $exe executable ""]
+	set lines [v3_target_compile $src /dev/null preprocess ""]
 	set cxxflags $cxxflags_saved
 	file delete $src
 
 	if [string match "" $lines] {
-	    # No error message, compilation succeeded.
+	    # No error message, preprocess succeeded.
 	    set et_cstdint 1
 	} else {
 	    verbose "check_v3_target_cstdint: compilation failed" 2
@@ -1173,28 +1158,26 @@ 
     } else {
 	set et_c99_math 0
 
-	# Set up and compile a C++0x test program that depends
+	# Set up and preprocess a C++0x test program that depends
 	# on the C99 math facilities to be available.
 	set src c99_math[pid].cc
-	set exe c99_math[pid].exe
 
 	set f [open $src "w"]
 	puts $f "#include <tr1/cmath>"
-	puts $f "int main()"
-	puts $f "#ifdef _GLIBCXX_USE_C99_MATH_TR1"
-	puts $f "{ return 0; }"
+	puts $f "#ifndef _GLIBCXX_USE_C99_MATH_TR1"
+	puts $f "#  error No C99 math"
 	puts $f "#endif"
 	close $f
 
 	set cxxflags_saved $cxxflags
 	set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
 
-	set lines [v3_target_compile $src $exe executable ""]
+	set lines [v3_target_compile $src /dev/null preprocess ""]
 	set cxxflags $cxxflags_saved
 	file delete $src
 
 	if [string match "" $lines] {
-	    # No error message, compilation succeeded.
+	    # No error message, preprocess succeeded.
 	    set et_c99_math 1
 	} else {
 	    verbose "check_v3_target_c99_math: compilation failed" 2
@@ -1231,28 +1214,26 @@ 
     } else {
 	set et_atomic_builtins 0
 
-	# Set up and compile a C++0x test program that depends
+	# Set up and preprocess a C++0x test program that depends
 	# on the atomic builtin facilities to be available.
 	set src atomic_builtins[pid].cc
-	set exe atomic_builtins[pid].exe
 
 	set f [open $src "w"]
 	puts $f "#include <bits/c++config.h>"
-	puts $f "int main()"
-	puts $f "#ifdef _GLIBCXX_ATOMIC_BUILTINS_4"
-	puts $f "{ return 0; }"
+	puts $f "#ifndef _GLIBCXX_ATOMIC_BUILTINS_4"
+	puts $f "#  error No atomic builtins"
 	puts $f "#endif"
 	close $f
 
 	set cxxflags_saved $cxxflags
 	set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
 
-	set lines [v3_target_compile $src $exe executable ""]
+	set lines [v3_target_compile $src /dev/null preprocess ""]
 	set cxxflags $cxxflags_saved
 	file delete $src
 
 	if [string match "" $lines] {
-	    # No error message, compilation succeeded.
+	    # No error message, preprocess succeeded.
 	    set et_atomic_builtins 1
 	} else {
 	    verbose "check_v3_target_atomic_builtins: compilation failed" 2
@@ -1289,28 +1270,26 @@ 
     } else {
         set et_gthreads 0
 
-        # Set up and compile a C++0x test program that depends
+        # Set up and preprocess a C++0x test program that depends
         # on the gthreads facilities to be available.
         set src gthreads[pid].cc
-        set exe gthreads[pid].exe
 
         set f [open $src "w"]
 	puts $f "#include <bits/c++config.h>"
-        puts $f "int main()"
-        puts $f "#ifdef _GLIBCXX_HAS_GTHREADS"
-        puts $f "{ return 0; }"
+        puts $f "#ifndef _GLIBCXX_HAS_GTHREADS"
+        puts $f "#  error No gthread"
         puts $f "#endif"
         close $f
 
         set cxxflags_saved $cxxflags
         set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
 
-        set lines [v3_target_compile $src $exe executable ""]
+        set lines [v3_target_compile $src /dev/null preprocess ""]
         set cxxflags $cxxflags_saved
         file delete $src
 
         if [string match "" $lines] {
-            # No error message, compilation succeeded.
+            # No error message, preprocessing succeeded.
             set et_gthreads 1
         } else {
             verbose "check_v3_target_gthreads: compilation failed" 2
@@ -1347,28 +1326,26 @@ 
     } else {
         set et_nanosleep 0
 	
-	# Set up and compile a C++0x test program that depends
+	# Set up and preprocess a C++0x test program that depends
         # on the nanosleep facilities to be available.
         set src nanosleep[pid].cc
-        set exe nanosleep[pid].exe
 
         set f [open $src "w"]
         puts $f "#include <bits/c++config.h>"
-        puts $f "int main()"
-        puts $f "#ifdef _GLIBCXX_USE_NANOSLEEP"
-        puts $f "{ return 0; }"
+        puts $f "#ifndef _GLIBCXX_USE_NANOSLEEP"
+        puts $f "#  error No nanosleep"
         puts $f "#endif"
         close $f
 
         set cxxflags_saved $cxxflags
         set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
 
-        set lines [v3_target_compile $src $exe executable ""]
+        set lines [v3_target_compile $src /dev/null preprocess ""]
         set cxxflags $cxxflags_saved
         file delete $src
 
         if [string match "" $lines] {
-            # No error message, compilation succeeded.
+            # No error message, preprocessing succeeded.
             set et_nanosleep 1
         } else {
             verbose "check_v3_target_nanosleep: compilation failed" 2
@@ -1405,28 +1382,26 @@ 
     } else {
         set et_sched_yield 0
 
-        # Set up and compile a C++0x test program that depends
+        # Set up and preprocess a C++0x test program that depends
         # on the sched_yield facility to be available.
         set src sched_yield[pid].cc
-        set exe sched_yield[pid].exe
 
         set f [open $src "w"]
         puts $f "#include <bits/c++config.h>"
-        puts $f "int main()"
-        puts $f "#ifdef _GLIBCXX_USE_SCHED_YIELD"
-        puts $f "{ return 0; }"
+        puts $f "#ifndef _GLIBCXX_USE_SCHED_YIELD"
+        puts $f "#  error No sched yield"
         puts $f "#endif"
         close $f
 
         set cxxflags_saved $cxxflags
         set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
 
-        set lines [v3_target_compile $src $exe executable ""]
+        set lines [v3_target_compile $src /dev/null preprocess ""]
         set cxxflags $cxxflags_saved
         file delete $src
 
         if [string match "" $lines] {
-            # No error message, compilation succeeded.
+            # No error message, preprocessing succeeded.
             set et_sched_yield 1
         } else {
             verbose "check_v3_target_sched_yield: compilation failed" 2
@@ -1463,28 +1438,26 @@ 
     } else {
         set et_string_conversions 0
 	
-	# Set up and compile a C++0x test program that depends
+	# Set up and preprocess a C++0x test program that depends
         # on the string_conversions facilities to be available.
         set src string_conversions[pid].cc
-        set exe string_conversions[pid].exe
 
         set f [open $src "w"]
         puts $f "#include <bits/c++config.h>"
-        puts $f "int main()"
-        puts $f "#if defined(_GLIBCXX_USE_C99) && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)"
-        puts $f "{ return 0; }"
+        puts $f "#if !defined(_GLIBCXX_USE_C99) || defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)"
+        puts $f "#  error No string conversions"
         puts $f "#endif"
         close $f
 
         set cxxflags_saved $cxxflags
         set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
 
-        set lines [v3_target_compile $src $exe executable ""]
+        set lines [v3_target_compile $src /dev/null preprocess ""]
         set cxxflags $cxxflags_saved
         file delete $src
 
         if [string match "" $lines] {
-            # No error message, compilation succeeded.
+            # No error message, preprocessing succeeded.
             set et_string_conversions 1
         } else {
             verbose "check_v3_target_string_conversions: compilation failed" 2
@@ -1521,28 +1494,26 @@ 
     } else {
         set et_swprintf 0
 	
-	# Set up and compile a C++0x test program that depends
+	# Set up and preprocess 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 "#if defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)"
+        puts $f "#  error No swprintf"
         puts $f "#endif"
         close $f
 
         set cxxflags_saved $cxxflags
         set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
 
-        set lines [v3_target_compile $src $exe executable ""]
+        set lines [v3_target_compile $src /dev/null preprocess ""]
         set cxxflags $cxxflags_saved
         file delete $src
 
         if [string match "" $lines] {
-            # No error message, compilation succeeded.
+            # No error message, preprocessing succeeded.
             set et_swprintf 1
         } else {
             verbose "check_v3_target_swprintf: compilation failed" 2
@@ -1579,28 +1550,26 @@ 
     } else {
         set et_binary_io 0
 	
-	# Set up and compile a C++0x test program that depends
+	# Set up and preprocess a C++0x test program that depends
         # on text and binary I/O being the same.
         set src binary_io[pid].cc
-        set exe binary_io[pid].exe
 
         set f [open $src "w"]
         puts $f "#include <bits/c++config.h>"
-        puts $f "int main()"
-        puts $f "#if !defined(_GLIBCXX_HAVE_DOS_BASED_FILESYSTEM)"
-        puts $f "{ return 0; }"
+        puts $f "#if defined(_GLIBCXX_HAVE_DOS_BASED_FILESYSTEM)"
+        puts $f "#  error No binary io"
         puts $f "#endif"
         close $f
 
         set cxxflags_saved $cxxflags
         set cxxflags "$cxxflags $DEFAULT_CXXFLAGS -Werror"
 
-        set lines [v3_target_compile $src $exe executable ""]
+        set lines [v3_target_compile $src /dev/null preprocess ""]
         set cxxflags $cxxflags_saved
         file delete $src
 
         if [string match "" $lines] {
-            # No error message, compilation succeeded.
+            # No error message, preprocessing succeeded.
             set et_binary_io 1
         } else {
             verbose "check_v3_target_binary_io: compilation failed" 2