[PATCH 2/5] kbuild: allow archs to select build for link dead code/data elimination
Alan Modra
amodra at gmail.com
Mon Aug 8 09:49:47 AEST 2016
On Sun, Aug 07, 2016 at 10:26:19PM +0200, Arnd Bergmann wrote:
> On Sunday, August 7, 2016 7:27:39 PM CEST Alan Modra wrote:
> >
> > 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
More information about the Linuxppc-dev
mailing list