Jenkins build is still unstable: FreeBSD_HEAD-tests2 #867
Craig Rodrigues
rodrigc at FreeBSD.org
Sun Mar 22 21:33:02 UTC 2015
On Sun, Mar 22, 2015 at 2:29 PM, Dimitry Andric <dim at freebsd.org> wrote:
>
> Ah right, that was on i386, on amd64 it does result in -2^63. It is
> indeed caused by reliance on signed integer wrapping.
>
> This diff should fix it, without rewriting the utility:
>
> Index: bin/expr/Makefile
> ===================================================================
> --- bin/expr/Makefile (revision 280156)
> +++ bin/expr/Makefile (working copy)
> @@ -6,6 +6,9 @@ PROG= expr
> SRCS= expr.y
> YFLAGS=
>
> +# expr relies on signed integer wrapping
> +CFLAGS+= -fwrapv
> +
> NO_WMISSING_VARIABLE_DECLARATIONS=
>
> .if ${MK_TESTS} != "no"
>
Well, another alternative is to patch expr.y:
Index: expr.y
===================================================================
--- expr.y (revision 280353)
+++ expr.y (working copy)
@@ -393,7 +393,7 @@
}
void
-assert_plus(intmax_t a, intmax_t b, intmax_t r)
+assert_plus(intmax_t a, intmax_t b, volatile intmax_t r)
{
/*
* sum of two positive numbers must be positive,
@@ -420,7 +420,7 @@
}
void
-assert_minus(intmax_t a, intmax_t b, intmax_t r)
+assert_minus(intmax_t a, intmax_t b, volatile intmax_t r)
{
/* special case subtraction of INTMAX_MIN */
if (b == INTMAX_MIN && a < 0)
There were already some patches previously done to this
file to add "volatile", so maybe this would be OK to do.
What do you think?
--
Craig
More information about the freebsd-toolchain
mailing list