From owner-freebsd-arm@freebsd.org Tue Feb 14 04:04:51 2017 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2C2F4CDE6E9 for ; Tue, 14 Feb 2017 04:04:51 +0000 (UTC) (envelope-from markmi@dsl-only.net) Received: from asp.reflexion.net (outbound-mail-210-70.reflexion.net [208.70.210.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CD9FE1EFF for ; Tue, 14 Feb 2017 04:04:50 +0000 (UTC) (envelope-from markmi@dsl-only.net) Received: (qmail 11587 invoked from network); 14 Feb 2017 04:04:43 -0000 Received: from unknown (HELO rtc-sm-01.app.dca.reflexion.local) (10.81.150.1) by 0 (rfx-qmail) with SMTP; 14 Feb 2017 04:04:43 -0000 Received: by rtc-sm-01.app.dca.reflexion.local (Reflexion email security v8.30.0) with SMTP; Mon, 13 Feb 2017 23:04:43 -0500 (EST) Received: (qmail 12433 invoked from network); 14 Feb 2017 04:04:43 -0000 Received: from unknown (HELO iron2.pdx.net) (69.64.224.71) by 0 (rfx-qmail) with (AES256-SHA encrypted) SMTP; 14 Feb 2017 04:04:43 -0000 Received: from [192.168.1.111] (c-67-170-167-181.hsd1.or.comcast.net [67.170.167.181]) by iron2.pdx.net (Postfix) with ESMTPSA id CFB28EC7B31; Mon, 13 Feb 2017 20:04:42 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: Re: bcopy/memmove optimization broken ? [looks like you are correct to me, I give supporting detail] From: Mark Millard In-Reply-To: <8E5F8A15-2F79-4015-B93B-975D27308782@dsl-only.net> Date: Mon, 13 Feb 2017 20:04:42 -0800 Cc: freebsd-arm , Ian Lepore Content-Transfer-Encoding: quoted-printable Message-Id: <674C2DA0-808D-4968-B86D-7CADEC3A7EEE@dsl-only.net> References: <5335118.oK1KXXDaG5@pc-alex> <25360EAB-3079-4037-9FB5-B7781ED40FA6@dsl-only.net> <7424243.zp5tqGREgJ@pc-alex> <8E5F8A15-2F79-4015-B93B-975D27308782@dsl-only.net> To: Alexandre Martins X-Mailer: Apple Mail (2.3259) X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Feb 2017 04:04:51 -0000 On 2017-Feb-13, at 1:27 AM, Mark Millard wrote: > As the decision about when to call the code that can > deal with overlapping memory regions is wrong, the code > that should only be used for non-overlaping regions likely > would handle some overlapping regions and so would operate > incorrectly in at least some cases. >=20 > In other words, I think the bug is worse than just an > example of being sub-optimal: the code is wrong from what > I can tell. (I've no clue if the code is ever put to use > for any bad cases.) I was wrong about the error status, possibly for multiple reasons, but the following is sufficient: https://www.freebsd.org/cgi/man.cgi?query=3Dmemcpy&sektion=3D3 says: In this implementation memcpy() is implemented using bcopy(3), and = there- fore the strings may overlap. On other systems, copying = overlapping strings may produce surprises. Programs intended to be portable = should use memmove(3) when src and dst may overlap. so the branch taken case for: bcc PIC_SYM(_C_LABEL(memcpy), PLT) also deals with overlaps since FreeBSD criteria is that memcpy does so. (I had been thinking that it did not deal with such.) Side note: Notably the arm implementation of FreeBSD memcpy does not call bcopy (that would be recursive in the arm implementation). memcpy just needs to have some properties that bcopy also has. This suggests that memcpy vs. bcopy may have a performance Principle of Least Astonishment violation since memcpy may well perform differently than bcopy for some types of contexts but memcpy is supposed to use bcopy. [A varient of these notes are in the comments for bugzilla 217065.] =3D=3D=3D Mark Millard markmi at dsl-only.net