Thread (16 messages) 16 messages, 5 authors, 2015-04-01

[RFC PATCH 2/2] Kbuild: avoid partial linking of drivers/built-in.o

From: Nicolas Pitre <hidden>
Date: 2015-03-31 18:42:32
Also in: linux-kbuild, lkml

On Tue, 31 Mar 2015, Dave Martin wrote:
On Tue, Mar 31, 2015 at 11:22:29AM -0400, Nicolas Pitre wrote:
quoted
On Mon, 30 Mar 2015, Ard Biesheuvel wrote:
quoted
On 30 March 2015 at 16:13, Michal Marek [off-list ref] wrote:
[...]
quoted
quoted
quoted
What you could do is to add a Kconfig option to arch/arm/Kconfig adding
-ffunction-sections to the compiler flags. Then allyesconfig would
select it and work around the problem in a somewhat elegant way.
Excellent idea! Arnd hasn't chimed in yet, but he is the one doing
lots and lots of randconfig builds and other test builds, so I will
wait for him to confirm that this is a useful thing to have.
I'm using -ffunction-sections as well for the kernel size reduction work 
I'm currently doing.  The linker script has to be adapted so .text.* is 
specified along .text otherwise those functions end up appended at the 
end of the binary.
Interesting ... do you also mean using --gc-sections at link time?
Yes.
We'd need to avoid pruning needed code that has no explicit caller,
and functions that are part of the kernel/module ABI but not used
within vmlinux.
Those are usually located in special sections, like the initcall table, 
the CPU entry table, etc. The linker allows for those sections to be 
marked with KEEP() not to prune them.
The GCC docs suggest that -ffunction-sections may impact performance
and/or increase code size, but I don't know by how much.  Maybe it
interferes with inling.
It doesn't interfere with inlining. However it impose a section 
alignment on every function. That still can be overriden though. Also, I 
suppose that gcc may not assume that calls to a global function that 
happens to be located in the same C file will be close by anymore, 
however I don't see this having any impact on ARM code generation.


Nicolas
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help