The ELFv2 ABI on powerpc64 explicitly states that when returning
through setjmp(3) from longjmp(3), the "limited access bits" are *not*
restored to the values they had before setjmp(3) was called.

This means that the tests here are expected to fail according to the
ABI.

Now we may opt to restore them anyway.  But it should be obvious that
relying on this behaviour is not portable.

Thoughts?


Index: regress/lib/libc/setjmp-fpu/Makefile
===================================================================
RCS file: /cvs/src/regress/lib/libc/setjmp-fpu/Makefile,v
retrieving revision 1.5
diff -u -p -r1.5 Makefile
--- regress/lib/libc/setjmp-fpu/Makefile        17 Dec 2020 00:51:11 -0000      
1.5
+++ regress/lib/libc/setjmp-fpu/Makefile        14 Apr 2021 18:28:12 -0000
@@ -15,4 +15,12 @@ run-$p: $p
        ./$p
 .endfor
 
+.if ${MACHINE} == powerpc64
+# The powerpc64 ELFv2 ABI explicitly states that exception enable bits
+# and rounding control bits are not restored by longjmp(3)
+.for p in ${PROGS:M*jmp}
+REGRESS_EXPECTED_FAILURES +=   run-$p
+.endfor
+.endif
+
 .include <bsd.regress.mk>

Reply via email to