Date: Fri, 27 Feb 2009 13:22:42 -0500 From: Alexander Kabaev <kabaev@gmail.com> To: Andriy Gapon <avg@icyb.net.ua> Cc: Ed Schouten <ed@80386.nl>, Roman Divacky <rdivacky@freebsd.org>, FreeBSD, Arch <freebsd-arch@freebsd.org> Subject: Re: Making LLVM happy: memmove() in the kernel Message-ID: <20090227132242.4ef6a633@kan.dnsalias.net> In-Reply-To: <49A80F4D.8000406@icyb.net.ua> References: <20090227131155.GE19161@hoeg.nl> <20090227131221.GA60215@freebsd.org> <49A80F4D.8000406@icyb.net.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On Fri, 27 Feb 2009 18:05:33 +0200 Andriy Gapon <avg@icyb.net.ua> wrote: > on 27/02/2009 15:12 Roman Divacky said the following: > > On Fri, Feb 27, 2009 at 02:11:55PM +0100, Ed Schouten wrote: > >> Hi all, > >> > >> The FreeBSD+LLVM folks* noticed Clang generates calls to memmove() > >> by itself. I have yet to confirm this, but I assume this is done > >> when performing copies of structs greater than a certain size. In > >> our kernel, we don't have a memmove() function, but we do have a > >> bcopy(). > > > > also.. quoting from > > (http://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/Standards.html): > > > > Most of the compiler support routines used by GCC are present in > > libgcc, but there are a few exceptions. GCC requires the > > freestanding environment provide memcpy, memmove, memset and memcmp. > > > > we were just lucky to not run into this > > Some people actually were not that lucky and had to use similar > workarounds. > I think we should use this opportunity and make sure we have external symbols for all of the above mem* functions, not just memmove. Please :) -- Alexander Kabaev [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iD8DBQFJqC9yQ6z1jMm+XZYRAiIXAJsH8W+cvnwb9Y+ZUo9NI3IbbWmy3ACfUwyS WHMH10V/OpAGTnP0Z453nuM= =se/P -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090227132242.4ef6a633>
