Date: Mon, 6 Apr 2015 16:30:01 -0600 From: Warner Losh <imp@bsdimp.com> To: John-Mark Gurney <jmg@funkthat.com> Cc: freebsd-arm@FreeBSD.org, Ian Lepore <ian@FreeBSD.org> Subject: Re: remove broken lib/libc/arm/string/memcpy_xscale.S Message-ID: <20DF0E2C-3552-4E55-8656-301EA8CD41C6@bsdimp.com> In-Reply-To: <20150406222407.GB51048@funkthat.com> References: <20150405015245.GO51048@funkthat.com> <EBEF298E-38F7-49BA-8BFC-D8B61C0F0BBA@bsdimp.com> <1428341561.82583.154.camel@freebsd.org> <BA53E900-AA5D-4007-B1F8-C2A0075BC816@bsdimp.com> <20150406222407.GB51048@funkthat.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail=_91BBA9EB-A0B9-4A15-90D0-0D76930AE3A3 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii > On Apr 6, 2015, at 4:24 PM, John-Mark Gurney <jmg@funkthat.com> wrote: >=20 > Warner Losh wrote this message on Mon, Apr 06, 2015 at 16:15 -0600: >>=20 >>> On Apr 6, 2015, at 11:32 AM, Ian Lepore <ian@freebsd.org> wrote: >>>=20 >>> On Mon, 2015-04-06 at 09:58 -0600, Warner Losh wrote: >>>>> On Apr 4, 2015, at 7:52 PM, John-Mark Gurney <jmg@funkthat.com> = wrote: >>>>>=20 >>>>> I would like to remove this file as it does not implement our = defined >>>>> memcpy. Per POSIX, overlapping regions passed to memcpy is = undefined >>>>> behavior. We have defined it to have the same symatics as = memmove. >>>>>=20 >>>>> Sample test program: >>>>> #include <stdio.h> >>>>> #include <string.h> >>>>>=20 >>>>> char bufa[512] =3D "this is a test buffer that should be copied = fine."; >>>>> int >>>>> main() >>>>> { >>>>>=20 >>>>> memcpy(&bufa[10], &bufa[0], strlen(&bufa[10])); >>>>> printf("%s\n", bufa); >>>>>=20 >>>>> return 0; >>>>> } >>>>>=20 >>>>> Output on amd64 HEAD: >>>>> this is a this is a test buffer that should be co >>>>>=20 >>>>> Output on old armv4 from 9.x: >>>>> this is a this is a thst buffethst bufhould beufh >>>>>=20 >>>>> If you just look at the file, it is clear that the implementation = does >>>>> not adjust the copy direction based upon pointers. We imported = the >>>>> code from NetBSD, and NetBSD does apparently require memcpy's = arguments >>>>> to be non-overlapping. >>>>>=20 >>>>> I'll remove the file shortly unless someone can prove to me that = all >>>>> uses of memcpy in our tree do not depend upon our defined behavior >>>>> per memcpy(3)'s man page. >>>>=20 >>>> Any chance you can fix this implementation instead? >>>>=20 >>>> Warner >>>=20 >>> I don't think we should be wasting our scarce developer resources = trying >>> to redevelop high-performance string functions for long-obsolete arm >>> hardware. Just revert to the generic implementations, and perhaps >>> someone who actually uses that old hardware will contribute high >>> performance implementations that follow the rules. >>>=20 >>> Hmmm, does netbsd have xscale performance implementations of = memmove()? >>> Maybe we can just drop that in as memcpy(). Any more work than that = is >>> probably wasted effort at this late date. >>=20 >> I just looked at what NetBSD has. I???ve looked at the assembly here. >> I think that we should just use the generic implementation now. These = routines >> are optimized for xscale, and don???t seem to be that much better = than the >> generic routines. >=20 > I've looked and I don't see a version of memmove.S in NetBSD... There = is > lib/libc/arch/arm/string/bcopy.S which includes memmove.S, but I can't > find memmove.S in their tree... It could be a generated file as I = don't > know their build infrastructure... bcopy is memmove with a different arg order, so they do assembler tricks = to provide both interfaces. Warner --Apple-Mail=_91BBA9EB-A0B9-4A15-90D0-0D76930AE3A3 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIcBAEBCgAGBQJVIwjpAAoJEGwc0Sh9sBEA/B0QANNlzI3/B7vV8A+9G5xIB8/u wk9Wtq11VItmwHit+wNUYRQpP36EtZEd/3jK3vy7o0DfCekH4+TIh1499GyEZaVD NoQn/7GEoGsKhNDVdi5uxQxwrKXDHFdFxRHwumJvUnk5DHMQRo+VL45lX+bEwfak EkGWIs9Q5GZC5v9KDkvfQMt02xIq7IMHdIxjcDs6zfALenGg3I1yH9/FCGctu26O xICQ9SUnAewLWT1GhvJcF+nAPhmGXlSILjPXJJp+W7WZTmz/G6s+A5zv4fHZElwt TLYWftQj7WWpnlcWWiILT+hg948rgDCgpzJuRfPw0ZjcXSJNBnJKZNGmozHmih5y d2DXkHgh28iONt+GmSx+Xh70HCVc0tWgq/KQsyi9AhP8NjKNfcs63JqUSTfvSJVT XHG9+l8++fk3paAO+ZXE1+OOJPekylcxQRZ54fhHdxutywz5ssZo/zJ9EC4O7RMr C05hAI7m6xeltv+M76NLTEFdwPJ79te+xISzTcFM/ScZUJWfqYmk/OS5BAfR0boS XEgryW5ujDAcYtmjvX7Aizj8Kyxo7gCrL3wr+i5GeyTiOz12ko6U6fcv+K6jp7gA 215xzmuBWC1fBJyvz7ehK6YeqkWKHFZnAvXNaFrv2UUjJ00ZWPgm3jgMXOYGrVfJ VDzpzXnKBKluXFJsWBqe =FSWq -----END PGP SIGNATURE----- --Apple-Mail=_91BBA9EB-A0B9-4A15-90D0-0D76930AE3A3--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20DF0E2C-3552-4E55-8656-301EA8CD41C6>