Kernel Module - GCC Requires memmove

Nate Eldredge neldredge at math.ucsd.edu
Wed Jan 21 17:14:45 PST 2009


On Thu, 22 Jan 2009, Andrew Brampton wrote:

> 2009/1/21 Alexander Kabaev <kabaev at gmail.com>:
>> From GCC's info pages:
>>
>> 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'.
>> </end quote>
>>
>> We do not provide all necessary functions in kernel and mostly depend
>> on luck for the kernel to link. Your luck apparently ran out :(
>>
>
> Thanks for the info, good thing I'm not a gambling man. Anyway I also
> read that part of the GCC manual, so my next question is: If code can
> be generated with those four functions, why are they not exported by
> the kernel? Surely another kernel module will at some point also be
> hit by this?

Possibly because the kernel is usually compiled with optimization, in 
which case the compiler presumably generates inline code for these 
functions.

I vaguely recall Linux having a policy that compiling the kernel without 
optimization was not supported, possibly because of situations like this.

-- 

Nate Eldredge
neldredge at math.ucsd.edu


More information about the freebsd-hackers mailing list