Re: Jenkins build is still unstable: FreeBSD_HEAD-tests2 #867

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sun, 22 Mar 2015 22:29:43 +0100
On 22 Mar 2015, at 22:23, Dimitry Andric <dim_at_FreeBSD.org> wrote:
> 
> On 22 Mar 2015, at 22:02, Craig Rodrigues <rodrigc_at_FreeBSD.org> wrote:
>> 
>> On Sun, Mar 22, 2015 at 11:26 AM, <jenkins-admin_at_freebsd.org> wrote:
>> 
>>> See <https://jenkins.freebsd.org/job/FreeBSD_HEAD-tests2/867/>
>>> 
>> 
>> Can someone with toolchain expertise look at this?
>> After the clang 3.6.1 import, /bin/expr behaves differently.
>> 
>> With clang 3.5.0:
>> 
>> # expr 4611686018427387904 + 4611686018427387904
>> expr: overflow
>> 
>> With clang 3.6.1:
>> 
>> # expr 4611686018427387904 + 4611686018427387904
>> -9223372036854775808
> 
> It works fine for me:
> 
> $ /usr/obj/usr/src/bin/expr/expr 4611686018427387904 + 4611686018427387904
> expr: overflow

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)
_at__at_ -6,6 +6,9 _at__at_ PROG=	expr
 SRCS=	expr.y
 YFLAGS=

+# expr relies on signed integer wrapping
+CFLAGS+= -fwrapv
+
 NO_WMISSING_VARIABLE_DECLARATIONS=

 .if ${MK_TESTS} != "no"

-Dimitry


Received on Sun Mar 22 2015 - 20:29:47 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:56 UTC