Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Apr 2015 09:58:49 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        John-Mark Gurney <jmg@funkthat.com>
Cc:        freebsd-arm@FreeBSD.org
Subject:   Re: remove broken lib/libc/arm/string/memcpy_xscale.S
Message-ID:  <EBEF298E-38F7-49BA-8BFC-D8B61C0F0BBA@bsdimp.com>
In-Reply-To: <20150405015245.GO51048@funkthat.com>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]

> On Apr 4, 2015, at 7:52 PM, John-Mark Gurney <jmg@funkthat.com> wrote:
> 
> 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.
> 
> Sample test program:
> #include <stdio.h>
> #include <string.h>
> 
> char bufa[512] = "this is a test buffer that should be copied fine.";
> int
> main()
> {
> 
>        memcpy(&bufa[10], &bufa[0], strlen(&bufa[10]));
>        printf("%s\n", bufa);
> 
>        return 0;
> }
> 
> Output on amd64 HEAD:
> this is a this is a test buffer that should be co
> 
> Output on old armv4 from 9.x:
> this is a this is a thst buffethst bufhould beufh
> 
> 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.
> 
> 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.

Any chance you can fix this implementation instead?

Warner

[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIcBAEBCgAGBQJVIq05AAoJEGwc0Sh9sBEAU54P/AlgpT9pDJxoZ5vK9JcB3Z45
1vfz0Vyr2OpfnXCU4A8W48sECy9OphGRoz0afGcEsZjAiRZk1JyBLgTjktAEoqAL
VfOMffmzmMRl2tJCkWDkveXiXp26k8PYY0y0hAd1TXuG8eHX21kXlPvGOtx7NxSn
9hBfMewIGGNlRUu/SK49AsyW9+wdNKR6hjCZWqnbGrAElXOJxsZ884gEG676Q33I
12A8rRvDPYznCsUePIS3TXFvTeQUcARZ+m6KOV3DOyvaU5qoL/ovpMufMEF8IF25
zDRBFsfCJyujDfNhLdB9x95LlEIVrw1F8rRVmncHjeM1vCP+FBh+molhgCmy9Nyw
k9b1NV17yYEQKOMmfXOEqieBA3fh2d96nCqnBNhzfozkHluss0DwwCzOKPeWqweY
6YAqrvWKo1X6vSZ5haESbiSkd+u+6axW0Q+sEhuElLdxBBTY1C6wwSd5zXnvtm2B
qExEF1gLhiTRKMGRVam95APGMIaqO3kuU6A8YByH/bC1u62wt8fRuNuX2F+XT9lN
LTyNyXCekCC631mA885trPtUVtzMmO3NcchgRDecwUi6VRyG0WoLn2nGnBXETQ7q
+ZSBPwC7LjgWtDl2ejG+zOSf+v9+X/KBWcilnvWuLIkEx5V0YD7FFgKSoyjQVKQs
w+CDqsANvfrZJ+GPLUI4
=GKgz
-----END PGP SIGNATURE-----
home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?EBEF298E-38F7-49BA-8BFC-D8B61C0F0BBA>