Re: [PATCH 2/5] kbuild: allow archs to select build for link dead code/data elimination
From: Alan Modra <hidden>
Date: 2016-08-07 23:49:54
Also in:
linux-arch, linux-kbuild
On Sun, Aug 07, 2016 at 10:26:19PM +0200, Arnd Bergmann wrote:
quoted hunk ↗ jump to hunk
On Sunday, August 7, 2016 7:27:39 PM CEST Alan Modra wrote:quoted
If it can, then Nicholas' patch should be: *(.text.hot .text.hot.*) *(.text.unlikely .text.unlikely.*) *(.text .text.*) If you can't put .text.fixup too far away then you may as well just use *(.text .text.*)I tried this version:diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index b1f8828e9eac..fc210dacac9a 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h@@ -438,7 +438,9 @@ * during second ld run in second ld pass when generating System.map */ #define TEXT_TEXT \ ALIGN_FUNCTION(); \ - *(.text.hot .text .text.fixup .text.unlikely .text.*) \ + *(.text.hot .text.hot.*) \ + *(.text.unlikely .text.fixup .text.unlikely.*) \ + *(.text .text.*) \ *(.ref.text) \ MEM_KEEP(init.text) \ MEM_KEEP(exit.text) \but that failed to link an allyesconfig kernel because of references from .fixup to .text.*. Trying your version now:
Well then, that proves you can't put .text.fixup too far aways from the associated input section.
*(.text.hot .text.hot.*) *(.text.unlikely .text.unlikely.*) *(.text .text.*)
Which means this is guaranteed to fail when you test it properly using gcc's profiling options, in order to generate .text.hot* and/or .text.unlikely* sections. It seems to me the right thing to do would be to change kernel asm to generate .text.foo.fixup for any .text.foo section. A gas feature available with binutils-2.26 enabled by --sectname-subst might help with implementing that. -- Alan Modra Australia Development Lab, IBM