NetBSD Problem Report #50513

From www@NetBSD.org  Thu Dec 10 21:33:37 2015
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.NetBSD.org [199.233.217.200])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(Client CN "mail.netbsd.org", Issuer "Postmaster NetBSD.org" (verified OK))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 12842A6651
	for <gnats-bugs@gnats.NetBSD.org>; Thu, 10 Dec 2015 21:33:37 +0000 (UTC)
Message-Id: <20151210213335.F31A0A667C@mollari.NetBSD.org>
Date: Thu, 10 Dec 2015 21:33:35 +0000 (UTC)
From: fzerangue@mac.com
Reply-To: fzerangue@mac.com
To: gnats-bugs@NetBSD.org
Subject: Incorrect logic for atomic_nand_xx.S
X-Send-Pr-Version: www-1.0

>Number:         50513
>Category:       port-arm32
>Synopsis:       Incorrect logic for atomic_nand_xx.S
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    port-arm32-maintainer
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 10 21:35:00 +0000 2015
>Closed-Date:    Mon May 30 18:40:48 +0000 2016
>Last-Modified:  Mon May 30 18:40:48 +0000 2016
>Originator:     Frank Zerangue
>Release:        NetBSD-7.0
>Organization:
>Environment:
Darwin Franks-Mac-Pro-3.local 14.5.0 Darwin Kernel Version 14.5.0: Wed Jul 29 02:26:53 PDT 2015; root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64

>Description:
usr/src/common/lib/libc/arch/arm/atomic/atomic_nand_xx.S

http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html - defines 
type __sync_fetch_and_nand (type *ptr, type value, ...) as
  { tmp = *ptr; *ptr = ~tmp & value; return tmp; }   // NAND

atomic_nand_xx.S implements the logic defined above (4.1.2) which is not a correct NAND function but should be implemented as defined below (4.4.5) which is a correct NAND function.

https://gcc.gnu.org/onlinedocs/gcc-4.4.5/gcc/Atomic-Builtins.html - defines
type __sync_fetch_and_nand (type *ptr, type value, ...) as
  { tmp = *ptr; *ptr = ~(tmp & value); return tmp; }   // NAND
>How-To-Repeat:

>Fix:

>Release-Note:

>Audit-Trail:
From: "Nick Hudson" <skrll@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/50513 CVS commit: src/common/lib/libc/arch/arm/atomic
Date: Fri, 11 Dec 2015 12:41:10 +0000

 Module Name:	src
 Committed By:	skrll
 Date:		Fri Dec 11 12:41:10 UTC 2015

 Modified Files:
 	src/common/lib/libc/arch/arm/atomic: atomic_nand_16.S atomic_nand_32.S
 	    atomic_nand_64.S atomic_nand_8.S sync_fetch_and_nand_8.S

 Log Message:
 Use gcc 4.4 and later operation for nand, i.e.
 *ptr = ~(tmp & value) instead of *ptr = ~tmp & value

 There was also another bug in sync_fetch_and_nand_8 which I've also fixed.

 PR port-arm32/50513: Incorrect logic for atomic_nand_xx.S


 To generate a diff of this commit:
 cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
     src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
     src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S
 cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S
 cvs rdiff -u -r1.4 -r1.5 \
     src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Soren Jacobsen" <snj@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/50513 CVS commit: [netbsd-7] src/common/lib/libc/arch/arm/atomic
Date: Fri, 26 Feb 2016 22:29:04 +0000

 Module Name:	src
 Committed By:	snj
 Date:		Fri Feb 26 22:29:04 UTC 2016

 Modified Files:
 	src/common/lib/libc/arch/arm/atomic [netbsd-7]: atomic_nand_16.S
 	    atomic_nand_32.S atomic_nand_64.S atomic_nand_8.S
 	    sync_fetch_and_nand_8.S

 Log Message:
 Pull up following revision(s) (requested by skrll in ticket #1105):
 	common/lib/libc/arch/arm/atomic/atomic_nand_16.S: revision 1.3
 	common/lib/libc/arch/arm/atomic/atomic_nand_32.S: revision 1.3
 	common/lib/libc/arch/arm/atomic/atomic_nand_64.S: revision 1.4
 	common/lib/libc/arch/arm/atomic/atomic_nand_8.S: revision 1.3
 	common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S: revision 1.5
 Use gcc 4.4 and later operation for nand, i.e.
 *ptr = ~(tmp & value) instead of *ptr = ~tmp & value
 There was also another bug in sync_fetch_and_nand_8 which I've also fixed.
 PR port-arm32/50513: Incorrect logic for atomic_nand_xx.S


 To generate a diff of this commit:
 cvs rdiff -u -r1.2 -r1.2.6.1 \
     src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
     src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
     src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S \
     src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S
 cvs rdiff -u -r1.3 -r1.3.6.1 \
     src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->feedback
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Mon, 30 May 2016 04:13:34 +0000
State-Changed-Why:
Is this fixed?


From: Frank Zerangue <fzerangue@mac.com>
To: gnats-bugs@NetBSD.org, dholland@NetBSD.org
Cc: port-arm32-maintainer@netbsd.org, netbsd-bugs@netbsd.org,
 gnats-admin@netbsd.org
Subject: Re: port-arm32/50513 (Incorrect logic for atomic_nand_xx.S)
Date: Mon, 30 May 2016 10:11:24 -0500

 --Apple-Mail=_34BE15E0-BA3E-4DAF-BCEF-9694CFA90729
 Content-Transfer-Encoding: quoted-printable
 Content-Type: text/plain;
 	charset=us-ascii

 Yes,

 Fix committed by Nick Hudson, 12/11/2015. See below.

 Frank

 From: "Nick Hudson" <skrll@netbsd.org <mailto:skrll@netbsd.org>>
 To: gnats-bugs@gnats.NetBSD.org <mailto:gnats-bugs@gnats.NetBSD.org>
 Cc:=20
 Subject: PR/50513 CVS commit: src/common/lib/libc/arch/arm/atomic
 Date: Fri, 11 Dec 2015 12:41:10 +0000

 Module Name:	src
 Committed By:	skrll
 Date:		Fri Dec 11 12:41:10 UTC 2015

 Modified Files:
 	src/common/lib/libc/arch/arm/atomic: atomic_nand_16.S =
 atomic_nand_32.S
 	    atomic_nand_64.S atomic_nand_8.S sync_fetch_and_nand_8.S

 Log Message:
 Use gcc 4.4 and later operation for nand, i.e.
 *ptr =3D ~(tmp & value) instead of *ptr =3D ~tmp & value

 There was also another bug in sync_fetch_and_nand_8 which I've also =
 fixed.

 PR port-arm32/50513: Incorrect logic for atomic_nand_xx.S


 To generate a diff of this commit:
 cvs rdiff -u -r1.2 -r1.3 =
 src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \
     src/common/lib/libc/arch/arm/atomic/atomic_nand_32.S \
     src/common/lib/libc/arch/arm/atomic/atomic_nand_8.S
 cvs rdiff -u -r1.3 -r1.4 =
 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S
 cvs rdiff -u -r1.4 -r1.5 \
     src/common/lib/libc/arch/arm/atomic/sync_fetch_and_nand_8.S

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

 > On May 29, 2016, at 11:13 PM, dholland@NetBSD.org wrote:
 >=20
 > Synopsis: Incorrect logic for atomic_nand_xx.S
 >=20
 > State-Changed-From-To: open->feedback
 > State-Changed-By: dholland@NetBSD.org
 > State-Changed-When: Mon, 30 May 2016 04:13:34 +0000
 > State-Changed-Why:
 > Is this fixed?
 >=20
 >=20
 >=20


 --Apple-Mail=_34BE15E0-BA3E-4DAF-BCEF-9694CFA90729
 Content-Transfer-Encoding: quoted-printable
 Content-Type: text/html;
 	charset=us-ascii

 <html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
 charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
 -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
 class=3D"">Yes,<div class=3D""><br class=3D""></div><div class=3D"">Fix =
 committed by Nick Hudson, 12/11/2015. See below.</div><div class=3D""><br =
 class=3D""></div><div class=3D"">Frank</div><div class=3D""><br =
 class=3D""></div><div class=3D"">From: "Nick Hudson" &lt;<a =
 href=3D"mailto:skrll@netbsd.org" class=3D"">skrll@netbsd.org</a>&gt;<br =
 class=3D"">To:&nbsp;<a href=3D"mailto:gnats-bugs@gnats.NetBSD.org" =
 class=3D"">gnats-bugs@gnats.NetBSD.org</a><br class=3D"">Cc:&nbsp;<br =
 class=3D"">Subject: PR/50513 CVS commit: =
 src/common/lib/libc/arch/arm/atomic<br class=3D"">Date: Fri, 11 Dec 2015 =
 12:41:10 +0000<br class=3D""><br class=3D"">Module Name:<span =
 class=3D"Apple-tab-span" style=3D"white-space: pre;">	</span>src<br =
 class=3D"">Committed By:<span class=3D"Apple-tab-span" =
 style=3D"white-space: pre;">	</span>skrll<br class=3D"">Date:<span =
 class=3D"Apple-tab-span" style=3D"white-space: pre;">	</span><span =
 class=3D"Apple-tab-span" style=3D"white-space: pre;">	</span>Fri Dec =
 11 12:41:10 UTC 2015<br class=3D""><br class=3D"">Modified Files:<br =
 class=3D""><span class=3D"Apple-tab-span" style=3D"white-space: pre;">	=
 </span>src/common/lib/libc/arch/arm/atomic: atomic_nand_16.S =
 atomic_nand_32.S<br class=3D""><span class=3D"Apple-tab-span" =
 style=3D"white-space: pre;">	=
 </span>&nbsp;&nbsp;&nbsp;&nbsp;atomic_nand_64.S atomic_nand_8.S =
 sync_fetch_and_nand_8.S<br class=3D""><br class=3D"">Log Message:<br =
 class=3D"">Use gcc 4.4 and later operation for nand, i.e.<br =
 class=3D"">*ptr =3D ~(tmp &amp; value) instead of *ptr =3D ~tmp &amp; =
 value<br class=3D""><br class=3D"">There was also another bug in =
 sync_fetch_and_nand_8 which I've also fixed.<br class=3D""><br =
 class=3D"">PR port-arm32/50513: Incorrect logic for atomic_nand_xx.S<br =
 class=3D""><br class=3D""><br class=3D"">To generate a diff of this =
 commit:<br class=3D"">cvs rdiff -u -r1.2 -r1.3 =
 src/common/lib/libc/arch/arm/atomic/atomic_nand_16.S \<br =
 class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;src/common/lib/libc/arch/arm/atomic/ato=
 mic_nand_32.S \<br =
 class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;src/common/lib/libc/arch/arm/atomic/ato=
 mic_nand_8.S<br class=3D"">cvs rdiff -u -r1.3 -r1.4 =
 src/common/lib/libc/arch/arm/atomic/atomic_nand_64.S<br class=3D"">cvs =
 rdiff -u -r1.4 -r1.5 \<br =
 class=3D"">&nbsp;&nbsp;&nbsp;&nbsp;src/common/lib/libc/arch/arm/atomic/syn=
 c_fetch_and_nand_8.S<br class=3D""><br class=3D"">Please note that diffs =
 are not public domain; they are subject to the<br class=3D"">copyright =
 notices on the relevant files.</div><div class=3D""><br =
 class=3D""><div><blockquote type=3D"cite" class=3D""><div class=3D"">On =
 May 29, 2016, at 11:13 PM, <a href=3D"mailto:dholland@NetBSD.org" =
 class=3D"">dholland@NetBSD.org</a> wrote:</div><br =
 class=3D"Apple-interchange-newline"><div class=3D"">Synopsis: Incorrect =
 logic for atomic_nand_xx.S<br class=3D""><br =
 class=3D"">State-Changed-From-To: open-&gt;feedback<br =
 class=3D"">State-Changed-By: <a href=3D"mailto:dholland@NetBSD.org" =
 class=3D"">dholland@NetBSD.org</a><br class=3D"">State-Changed-When: =
 Mon, 30 May 2016 04:13:34 +0000<br class=3D"">State-Changed-Why:<br =
 class=3D"">Is this fixed?<br class=3D""><br class=3D""><br class=3D""><br =
 class=3D""></div></blockquote></div><br class=3D""></div></body></html>=

 --Apple-Mail=_34BE15E0-BA3E-4DAF-BCEF-9694CFA90729--

State-Changed-From-To: feedback->closed
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Mon, 30 May 2016 18:40:48 +0000
State-Changed-Why:
confirmed, thanks.


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.