[pushed] S390: Use soft float in s390-tdbregs test case

Message ID m3o9lr0zu7.fsf@oc1027705133.ibm.com
State New, archived
Headers

Commit Message

Andreas Arnez Jan. 18, 2018, 6:46 p.m. UTC
  The GDB test case s390-tdbregs.exp verifies GDB's handling of the
"transaction diagnostic block".  For simplicity, the test case uses the
"transaction begin" (TBEGIN) instruction with the "allow floating-point
operation" flag set to zero.  But some GCC versions may indeed emit
floating point or vector instructions for this test case.  If this happens
in the transaction, it aborts, and an endless loop results.

This change tells the compiler to produce a soft-float binary, so no
floating-point or vector registers are touched.

gdb/testsuite/ChangeLog:

	* gdb.arch/s390-tdbregs.exp: Add the compile option -msoft-float.
---
 gdb/testsuite/ChangeLog                 | 4 ++++
 gdb/testsuite/gdb.arch/s390-tdbregs.exp | 5 ++++-
 2 files changed, 8 insertions(+), 1 deletion(-)
  

Comments

Pedro Alves Jan. 18, 2018, 8:09 p.m. UTC | #1
On 01/18/2018 06:46 PM, Andreas Arnez wrote:
> The GDB test case s390-tdbregs.exp verifies GDB's handling of the
> "transaction diagnostic block".  For simplicity, the test case uses the
> "transaction begin" (TBEGIN) instruction with the "allow floating-point
> operation" flag set to zero.  But some GCC versions may indeed emit
> floating point or vector instructions for this test case.  If this happens
> in the transaction, it aborts, and an endless loop results.
> 
> This change tells the compiler to produce a soft-float binary, so no
> floating-point or vector registers are touched.

I found the rationale above quite instructive.  How about
putting it in the exp file directly?

>  
> -if { [prepare_for_testing "failed to prepare" $testfile $srcfile] } {
> +# Use soft float, so the compiler doesn't use floating-point or vector
> +# instructions.
> +if { [prepare_for_testing "failed to prepare" $testfile $srcfile \
> +	  [list "debug" "additional_flags=-msoft-float"]] } {
>      return -1

I mean, the comment here alone as is doesn't explain why we'd rather
the compiler not use float-point/vector insns, which I think is a
question people reading the testcase will tend to ask themselves,
and the answer isn't obvious.  At least to me.

Thanks,
Pedro Alves
  

Patch

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 210c078..c3fc9c3 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@ 
+2018-01-18  Andreas Arnez  <arnez@linux.vnet.ibm.com>
+
+	* gdb.arch/s390-tdbregs.exp: Add the compile option -msoft-float.
+
 2018-01-17  Mike Gulick  <mgulick@mathworks.com>
 
 	PR gdb/16577
diff --git a/gdb/testsuite/gdb.arch/s390-tdbregs.exp b/gdb/testsuite/gdb.arch/s390-tdbregs.exp
index 53d6c50..47d9d38 100644
--- a/gdb/testsuite/gdb.arch/s390-tdbregs.exp
+++ b/gdb/testsuite/gdb.arch/s390-tdbregs.exp
@@ -26,7 +26,10 @@  if { ![istarget s390-*-*] && ![istarget s390x-*-* ] } {
 
 standard_testfile .c
 
-if { [prepare_for_testing "failed to prepare" $testfile $srcfile] } {
+# Use soft float, so the compiler doesn't use floating-point or vector
+# instructions.
+if { [prepare_for_testing "failed to prepare" $testfile $srcfile \
+	  [list "debug" "additional_flags=-msoft-float"]] } {
     return -1
 }