This is the mail archive of the libffi-discuss@sourceware.org mailing list for the libffi project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[testsuite, libffi] XFAIL libffi.call/cls_{,long}double_va.c on IRIX 6.5 (PR libffi/46660)


A fresh look at the remaining two libffi testsuite failures on IRIX 6.5
revealed why they cannot currently work:

FAIL: libffi.call/cls_double_va.c -O0 -W -Wall output pattern test, is 0.0
FAIL: libffi.call/cls_longdouble_va.c -O0 -W -Wall output pattern test, is 0.0

Those tests pass floating point arguments to varargs functions, which
libffi currently (i.e. before 3.0.11) doesn't support.  Unfortunately,
the MIPS N32 and N64 ABIs pass floating point args in integer registers
in this case, as described in the MIPSpro N32 ABI Handbook, p. 7:

http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=bks&srch=&fname=/SGI_Developer/Mpro_n32_ABI/sgi_html/ch02.html

while for the O32 ABI there's no difference between varargs and
non-varargs functions.

The following patch handles this.  On mainline and the 4.6 branch, it
xfails the tests on IRIX 6.  The 4.5 branch is a bit different: since
the O32 ABI is still supported there, the difference between them needs
to be taken into account.  Unfortunately, dg-output doesn't take the
input-opts and exclude-opts parameters dg-xfail-if and dg-skip-if do
(and is taken from upstream DejaGnu, not overridden/implemented in GCC),
so I'm forced to use dg-skip-if.  Even dg-xfail-if is not enough since
the execution tests would XPASS and the output test FAIL.
Unfortunately, libffi has its own implementation of dg-xfail-if and is
missing dg-skip-if completely.  To deal with this without duplication, I
include the implementation from gcc/testsuite/lib, which shouldn't be an
issue since other .exp files are already included from there.

Tested on mips-sgi-irix6.5 with the appropriate runtest invocations.
For the 4.5 branch, I've rerun the whole libffi testsuite for all 3 ABIs
to make sure nothing broke.

Installed on mainline, 4.6 and 4.5 branches.

	Rainer


Mainline/4.6 branch version:

2011-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR libffi/46660
	* testsuite/libffi.call/cls_double_va.c: xfail dg-output on
	mips-sgi-irix6*.
	* testsuite/libffi.call/cls_longdouble_va.c: Likewise.

Index: libffi/testsuite/libffi.call/cls_double_va.c
===================================================================
--- libffi/testsuite/libffi.call/cls_double_va.c	(revision 175617)
+++ libffi/testsuite/libffi.call/cls_double_va.c	(working copy)
@@ -6,6 +6,7 @@
 
 /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
 /* { dg-output "" { xfail avr32*-*-* } } */
+/* { dg-output "PR libffi/46660" { xfail mips-sgi-irix6* } } */
 /* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */
 
 #include "ffitest.h"
Index: libffi/testsuite/libffi.call/cls_longdouble_va.c
===================================================================
--- libffi/testsuite/libffi.call/cls_longdouble_va.c	(revision 175617)
+++ libffi/testsuite/libffi.call/cls_longdouble_va.c	(working copy)
@@ -6,6 +6,7 @@
 
 /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
 /* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */
+/* { dg-output "PR libffi/46660" { xfail mips-sgi-irix6* } } */
 /* { dg-skip-if "" arm*-*-* { "-mfloat-abi=hard" } { "" } } */
 
 #include "ffitest.h"

4.5 branch version:

2011-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR libffi/46660
	* testsuite/lib/libffi-dg.exp: Load target-supports.exp,
	target-supports-dg.exp.
	(dg-xfail-if): Remove.
	* testsuite/libffi.call/cls_double_va.c: Skip on mips-sgi-irix6*
	unless -mabi=32.
	* testsuite/libffi.call/cls_longdouble_va.c: Likewise.

Index: libffi/testsuite/libffi.call/cls_double_va.c
===================================================================
--- libffi/testsuite/libffi.call/cls_double_va.c	(revision 175619)
+++ libffi/testsuite/libffi.call/cls_double_va.c	(working copy)
@@ -6,6 +6,7 @@
 
 /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
 /* { dg-output "" { xfail avr32*-*-* } } */
+/* { dg-skip-if "PR libffi/46660" { mips-sgi-irix6* } { "*" } { "-mabi=32" } } */
 #include "ffitest.h"
 
 static void
Index: libffi/testsuite/libffi.call/cls_longdouble_va.c
===================================================================
--- libffi/testsuite/libffi.call/cls_longdouble_va.c	(revision 175619)
+++ libffi/testsuite/libffi.call/cls_longdouble_va.c	(working copy)
@@ -6,6 +6,7 @@
 
 /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */
 /* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */
+/* { dg-skip-if "PR libffi/46660" { mips-sgi-irix6* } { "*" } { "-mabi=32" } } */
 #include "ffitest.h"
 
 static void
Index: libffi/testsuite/lib/libffi-dg.exp
===================================================================
--- libffi/testsuite/lib/libffi-dg.exp	(revision 175619)
+++ libffi/testsuite/lib/libffi-dg.exp	(working copy)
@@ -1,4 +1,5 @@
-#   Copyright (C) 2003, 2005, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2005, 2008, 2009, 2010, 2011
+# Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,6 +22,8 @@
 
 load_lib dg.exp
 load_lib libgloss.exp
+load_gcc_lib target-supports.exp
+load_gcc_lib target-supports-dg.exp
 load_gcc_lib target-libpath.exp
 load_gcc_lib wrapper.exp
 
@@ -261,18 +264,6 @@
 }
 
 
-# Like check_conditional_xfail, but callable from a dg test.
-
-proc dg-xfail-if { args } {
-    set args [lreplace $args 0 0]
-    set selector "target [join [lindex $args 1]]"
-    if { [dg-process-target $selector] == "S" } {
-	global compiler_conditional_xfail_data
-	set compiler_conditional_xfail_data $args
-    }
-}
-
-
 # We need to make sure that additional_files and additional_sources
 # are both cleared out after every test.  It is not enough to clear
 # them out *before* the next test run because gcc-target-compile gets


-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]