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]

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


On Wed, Jun 29, 2011 at 10:26 AM, Rainer Orth
<ro@cebitec.uni-bielefeld.de> wrote:
> 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.

The tests now fail on x86_64-linux and i?86-linux like

FAIL: libffi.call/cls_double_va.c -O0 -W -Wall output pattern test, is 7.0
FAIL: libffi.call/cls_longdouble_va.c -O0 -W -Wall output pattern test, is 7.0
FAIL: libffi.call/cls_double_va.c -O2 output pattern test, is 7.0
FAIL: libffi.call/cls_longdouble_va.c -O2 output pattern test, is 7.0
FAIL: libffi.call/cls_double_va.c -O3 output pattern test, is 7.0
FAIL: libffi.call/cls_longdouble_va.c -O3 output pattern test, is 7.0
FAIL: libffi.call/cls_double_va.c -Os output pattern test, is 7.0
FAIL: libffi.call/cls_longdouble_va.c -Os output pattern test, is 7.0
FAIL: libffi.call/cls_double_va.c -O2 -fomit-frame-pointer output pattern test,
is 7.0
FAIL: libffi.call/cls_longdouble_va.c -O2 -fomit-frame-pointer output pattern te
st, is 7.0

spawn [open ...]^M
7.0
res: 4
7.0
res: 4
PASS: libffi.call/cls_double_va.c -O0 -W -Wall execution test
FAIL: libffi.call/cls_double_va.c -O0 -W -Wall output pattern test, is 7.0
res: 4
7.0
res: 4
, should match PR libffi/466607.0^M?
res: 4^M?
7.0^M?
res: 4

I believe your dg-output first arguments are bogus.

Richard.

> ? ? ? ?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]