[PATCH v2] arm64: kill off the libgcc dependency

Catalin Marinas catalin.marinas at arm.com
Thu Jan 15 07:28:26 PST 2015


On Thu, Jan 15, 2015 at 12:07:33PM +0000, Kevin Hao wrote:
> The arm64 kernel builds fine without the libgcc. Actually it should not
> be used at all in the kernel. The following are the reasons indicated
> by Russell King:
>   Although libgcc is part of the compiler, libgcc is built with the
>   expectation that it will be running in userland - it expects to link
>   to a libc.  That's why you can't build libgcc without having the glibc
>   headers around.
> 
>   For example, on ARM, libgcc.a may contain calls to __div0, and it may
>   provide its own __div0 implementation, which invokes various Linux
>   system calls.
> 
>   Various functions reference _GLOBAL_OFFSET_TABLE_ which we don't want
>   to have in the kernel.
> 
>   Depending on how the compiler was built, libgcc.a may be built for
>   ARMv4, ARMv5, ARMv6 or ARMv7, and may not be appropriate for linking
>   with the kernel.  (Eg, you wouldn't want to try to link an ARMv7
>   libgcc.a in an ARMv5 kernel - and we /really/ don't want the mess
>   of having different toolchains for different ARM arch versions.)
> 
>   It may also drag in the userspace exception unwind support.
> 
>   Meanwhile, having the kernel build the compiler support functions that
>   it needs ensures that (a) we know what compiler support functions are
>   being used, (b) we know the implementation of those support functions
>   are sane for use in the kernel, (c) we can build them with appropriate
>   compiler flags for best performance, and (d) we remove an unnecessary
>   dependency on the build toolchain.
> 
> Signed-off-by: Kevin Hao <haokexin at gmail.com>
> Acked-by: Will Deacon <will.deacon at arm.com>

Thanks. I'll queue this for 3.20 but I'll edit the commit log a bit as
not all of it makes sense on arm64.

-- 
Catalin



More information about the linux-arm-kernel mailing list