Message ID | 20180420073414.23169-5-npiggin@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Apr 20, 2018 at 9:34 AM, Nicholas Piggin <npiggin@gmail.com> wrote: > This requires further changes to linker script to KEEP some tables > and wildcard compiler generated sections into the right place. This > includes pp32 modifications from Christophe Leroy. > > When compiling powernv_defconfig with this option: > > text data bss dec filename > 11827621 4810490 1341080 17979191 vmlinux > 11752437 4598858 1338776 17690071 vmlinux.dcde > > Resulting kernel is almost 400kB smaller (and still boots). > > [ppc32 numbers here] ^^^ Do you want somebody else to provide those numbers ? > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > arch/powerpc/Kconfig | 1 + > arch/powerpc/kernel/vmlinux.lds.S | 22 +++++++++++----------- > 2 files changed, 12 insertions(+), 11 deletions(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index c32a181a7cbb..ee6dbe2efc8b 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -205,6 +205,7 @@ config PPC > select HAVE_KPROBES > select HAVE_KPROBES_ON_FTRACE > select HAVE_KRETPROBES > + select HAVE_LD_DEAD_CODE_DATA_ELIMINATION > select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS > select HAVE_MEMBLOCK > select HAVE_MEMBLOCK_NODE_MAP > diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S > index c8af90ff49f0..89381dc959ce 100644 > --- a/arch/powerpc/kernel/vmlinux.lds.S > +++ b/arch/powerpc/kernel/vmlinux.lds.S > @@ -89,7 +89,7 @@ SECTIONS > */ > .text BLOCK(0) : AT(ADDR(.text) - LOAD_OFFSET) { > #ifdef CONFIG_LD_HEAD_STUB_CATCH > - *(.linker_stub_catch); > + KEEP(*(.linker_stub_catch)); > . = . ; > #endif > > @@ -98,7 +98,7 @@ SECTIONS > ALIGN_FUNCTION(); > #endif > /* careful! __ftr_alt_* sections need to be close to .text */ > - *(.text.hot .text .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); > + *(.text.hot .text .text.[0-9a-zA-Z_]* .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); > SCHED_TEXT > CPUIDLE_TEXT > LOCK_TEXT > @@ -170,10 +170,10 @@ SECTIONS > .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { > INIT_DATA > __vtop_table_begin = .; > - *(.vtop_fixup); > + KEEP(*(.vtop_fixup)); > __vtop_table_end = .; > __ptov_table_begin = .; > - *(.ptov_fixup); > + KEEP(*(.ptov_fixup)); > __ptov_table_end = .; > } > > @@ -194,26 +194,26 @@ SECTIONS > . = ALIGN(8); > __ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) { > __start___ftr_fixup = .; > - *(__ftr_fixup) > + KEEP(*(__ftr_fixup)) > __stop___ftr_fixup = .; > } > . = ALIGN(8); > __mmu_ftr_fixup : AT(ADDR(__mmu_ftr_fixup) - LOAD_OFFSET) { > __start___mmu_ftr_fixup = .; > - *(__mmu_ftr_fixup) > + KEEP(*(__mmu_ftr_fixup)) > __stop___mmu_ftr_fixup = .; > } > . = ALIGN(8); > __lwsync_fixup : AT(ADDR(__lwsync_fixup) - LOAD_OFFSET) { > __start___lwsync_fixup = .; > - *(__lwsync_fixup) > + KEEP(*(__lwsync_fixup)) > __stop___lwsync_fixup = .; > } > #ifdef CONFIG_PPC64 > . = ALIGN(8); > __fw_ftr_fixup : AT(ADDR(__fw_ftr_fixup) - LOAD_OFFSET) { > __start___fw_ftr_fixup = .; > - *(__fw_ftr_fixup) > + KEEP(*(__fw_ftr_fixup)) > __stop___fw_ftr_fixup = .; > } > #endif > @@ -226,7 +226,7 @@ SECTIONS > . = ALIGN(8); > .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) { > __machine_desc_start = . ; > - *(.machine.desc) > + KEEP(*(.machine.desc)) > __machine_desc_end = . ; > } > #ifdef CONFIG_RELOCATABLE > @@ -274,7 +274,7 @@ SECTIONS > .data : AT(ADDR(.data) - LOAD_OFFSET) { > DATA_DATA > *(.data.rel*) > - *(.sdata) > + *(SDATA_MAIN) > *(.sdata2) > *(.got.plt) *(.got) > *(.plt) > @@ -289,7 +289,7 @@ SECTIONS > > .opd : AT(ADDR(.opd) - LOAD_OFFSET) { > __start_opd = .; > - *(.opd) > + KEEP(*(.opd)) > __end_opd = .; > } > > -- > 2.17.0 > -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Le 20/04/2018 à 09:34, Nicholas Piggin a écrit : > This requires further changes to linker script to KEEP some tables > and wildcard compiler generated sections into the right place. This > includes pp32 modifications from Christophe Leroy. > > When compiling powernv_defconfig with this option: > > text data bss dec filename > 11827621 4810490 1341080 17979191 vmlinux > 11752437 4598858 1338776 17690071 vmlinux.dcde > > Resulting kernel is almost 400kB smaller (and still boots). > > [ppc32 numbers here] > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > arch/powerpc/Kconfig | 1 + > arch/powerpc/kernel/vmlinux.lds.S | 22 +++++++++++----------- > 2 files changed, 12 insertions(+), 11 deletions(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index c32a181a7cbb..ee6dbe2efc8b 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -205,6 +205,7 @@ config PPC > select HAVE_KPROBES > select HAVE_KPROBES_ON_FTRACE > select HAVE_KRETPROBES > + select HAVE_LD_DEAD_CODE_DATA_ELIMINATION > select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS > select HAVE_MEMBLOCK > select HAVE_MEMBLOCK_NODE_MAP > diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S > index c8af90ff49f0..89381dc959ce 100644 > --- a/arch/powerpc/kernel/vmlinux.lds.S > +++ b/arch/powerpc/kernel/vmlinux.lds.S > @@ -89,7 +89,7 @@ SECTIONS > */ > .text BLOCK(0) : AT(ADDR(.text) - LOAD_OFFSET) { > #ifdef CONFIG_LD_HEAD_STUB_CATCH > - *(.linker_stub_catch); > + KEEP(*(.linker_stub_catch)); > . = . ; > #endif > > @@ -98,7 +98,7 @@ SECTIONS > ALIGN_FUNCTION(); > #endif > /* careful! __ftr_alt_* sections need to be close to .text */ > - *(.text.hot .text .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); > + *(.text.hot .text .text.[0-9a-zA-Z_]* .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); Why not use TEXT_MAIN here instead of .text .text.[0-9a-zA-Z_]* ? Christophe > SCHED_TEXT > CPUIDLE_TEXT > LOCK_TEXT > @@ -170,10 +170,10 @@ SECTIONS > .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { > INIT_DATA > __vtop_table_begin = .; > - *(.vtop_fixup); > + KEEP(*(.vtop_fixup)); > __vtop_table_end = .; > __ptov_table_begin = .; > - *(.ptov_fixup); > + KEEP(*(.ptov_fixup)); > __ptov_table_end = .; > } > > @@ -194,26 +194,26 @@ SECTIONS > . = ALIGN(8); > __ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) { > __start___ftr_fixup = .; > - *(__ftr_fixup) > + KEEP(*(__ftr_fixup)) > __stop___ftr_fixup = .; > } > . = ALIGN(8); > __mmu_ftr_fixup : AT(ADDR(__mmu_ftr_fixup) - LOAD_OFFSET) { > __start___mmu_ftr_fixup = .; > - *(__mmu_ftr_fixup) > + KEEP(*(__mmu_ftr_fixup)) > __stop___mmu_ftr_fixup = .; > } > . = ALIGN(8); > __lwsync_fixup : AT(ADDR(__lwsync_fixup) - LOAD_OFFSET) { > __start___lwsync_fixup = .; > - *(__lwsync_fixup) > + KEEP(*(__lwsync_fixup)) > __stop___lwsync_fixup = .; > } > #ifdef CONFIG_PPC64 > . = ALIGN(8); > __fw_ftr_fixup : AT(ADDR(__fw_ftr_fixup) - LOAD_OFFSET) { > __start___fw_ftr_fixup = .; > - *(__fw_ftr_fixup) > + KEEP(*(__fw_ftr_fixup)) > __stop___fw_ftr_fixup = .; > } > #endif > @@ -226,7 +226,7 @@ SECTIONS > . = ALIGN(8); > .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) { > __machine_desc_start = . ; > - *(.machine.desc) > + KEEP(*(.machine.desc)) > __machine_desc_end = . ; > } > #ifdef CONFIG_RELOCATABLE > @@ -274,7 +274,7 @@ SECTIONS > .data : AT(ADDR(.data) - LOAD_OFFSET) { > DATA_DATA > *(.data.rel*) > - *(.sdata) > + *(SDATA_MAIN) > *(.sdata2) > *(.got.plt) *(.got) > *(.plt) > @@ -289,7 +289,7 @@ SECTIONS > > .opd : AT(ADDR(.opd) - LOAD_OFFSET) { > __start_opd = .; > - *(.opd) > + KEEP(*(.opd)) > __end_opd = .; > } > > -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, 20 Apr 2018 12:01:34 +0200 Christophe LEROY <christophe.leroy@c-s.fr> wrote: > Le 20/04/2018 à 09:34, Nicholas Piggin a écrit : > > This requires further changes to linker script to KEEP some tables > > and wildcard compiler generated sections into the right place. This > > includes pp32 modifications from Christophe Leroy. > > > > When compiling powernv_defconfig with this option: > > > > text data bss dec filename > > 11827621 4810490 1341080 17979191 vmlinux > > 11752437 4598858 1338776 17690071 vmlinux.dcde > > > > Resulting kernel is almost 400kB smaller (and still boots). > > > > [ppc32 numbers here] > > > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > --- > > arch/powerpc/Kconfig | 1 + > > arch/powerpc/kernel/vmlinux.lds.S | 22 +++++++++++----------- > > 2 files changed, 12 insertions(+), 11 deletions(-) > > > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > > index c32a181a7cbb..ee6dbe2efc8b 100644 > > --- a/arch/powerpc/Kconfig > > +++ b/arch/powerpc/Kconfig > > @@ -205,6 +205,7 @@ config PPC > > select HAVE_KPROBES > > select HAVE_KPROBES_ON_FTRACE > > select HAVE_KRETPROBES > > + select HAVE_LD_DEAD_CODE_DATA_ELIMINATION > > select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS > > select HAVE_MEMBLOCK > > select HAVE_MEMBLOCK_NODE_MAP > > diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S > > index c8af90ff49f0..89381dc959ce 100644 > > --- a/arch/powerpc/kernel/vmlinux.lds.S > > +++ b/arch/powerpc/kernel/vmlinux.lds.S > > @@ -89,7 +89,7 @@ SECTIONS > > */ > > .text BLOCK(0) : AT(ADDR(.text) - LOAD_OFFSET) { > > #ifdef CONFIG_LD_HEAD_STUB_CATCH > > - *(.linker_stub_catch); > > + KEEP(*(.linker_stub_catch)); > > . = . ; > > #endif > > > > @@ -98,7 +98,7 @@ SECTIONS > > ALIGN_FUNCTION(); > > #endif > > /* careful! __ftr_alt_* sections need to be close to .text */ > > - *(.text.hot .text .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); > > + *(.text.hot .text .text.[0-9a-zA-Z_]* .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); > > Why not use TEXT_MAIN here instead of .text .text.[0-9a-zA-Z_]* ? It's from my early patch before we added those in the generic linker script. Yes your version looks nicer. Thanks, Nick -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Le 20/04/2018 à 09:34, Nicholas Piggin a écrit : > This requires further changes to linker script to KEEP some tables > and wildcard compiler generated sections into the right place. This > includes pp32 modifications from Christophe Leroy. > > When compiling powernv_defconfig with this option: > > text data bss dec filename > 11827621 4810490 1341080 17979191 vmlinux > 11752437 4598858 1338776 17690071 vmlinux.dcde > > Resulting kernel is almost 400kB smaller (and still boots). > > [ppc32 numbers here] > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Tested-by: Christophe Leroy <christophe.leroy@c-s.fr> Tested on MPC885 and MPC8321E, CONFIG_MODULE unset. Christophe > --- > arch/powerpc/Kconfig | 1 + > arch/powerpc/kernel/vmlinux.lds.S | 22 +++++++++++----------- > 2 files changed, 12 insertions(+), 11 deletions(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index c32a181a7cbb..ee6dbe2efc8b 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -205,6 +205,7 @@ config PPC > select HAVE_KPROBES > select HAVE_KPROBES_ON_FTRACE > select HAVE_KRETPROBES > + select HAVE_LD_DEAD_CODE_DATA_ELIMINATION > select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS > select HAVE_MEMBLOCK > select HAVE_MEMBLOCK_NODE_MAP > diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S > index c8af90ff49f0..89381dc959ce 100644 > --- a/arch/powerpc/kernel/vmlinux.lds.S > +++ b/arch/powerpc/kernel/vmlinux.lds.S > @@ -89,7 +89,7 @@ SECTIONS > */ > .text BLOCK(0) : AT(ADDR(.text) - LOAD_OFFSET) { > #ifdef CONFIG_LD_HEAD_STUB_CATCH > - *(.linker_stub_catch); > + KEEP(*(.linker_stub_catch)); > . = . ; > #endif > > @@ -98,7 +98,7 @@ SECTIONS > ALIGN_FUNCTION(); > #endif > /* careful! __ftr_alt_* sections need to be close to .text */ > - *(.text.hot .text .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); > + *(.text.hot .text .text.[0-9a-zA-Z_]* .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); > SCHED_TEXT > CPUIDLE_TEXT > LOCK_TEXT > @@ -170,10 +170,10 @@ SECTIONS > .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { > INIT_DATA > __vtop_table_begin = .; > - *(.vtop_fixup); > + KEEP(*(.vtop_fixup)); > __vtop_table_end = .; > __ptov_table_begin = .; > - *(.ptov_fixup); > + KEEP(*(.ptov_fixup)); > __ptov_table_end = .; > } > > @@ -194,26 +194,26 @@ SECTIONS > . = ALIGN(8); > __ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) { > __start___ftr_fixup = .; > - *(__ftr_fixup) > + KEEP(*(__ftr_fixup)) > __stop___ftr_fixup = .; > } > . = ALIGN(8); > __mmu_ftr_fixup : AT(ADDR(__mmu_ftr_fixup) - LOAD_OFFSET) { > __start___mmu_ftr_fixup = .; > - *(__mmu_ftr_fixup) > + KEEP(*(__mmu_ftr_fixup)) > __stop___mmu_ftr_fixup = .; > } > . = ALIGN(8); > __lwsync_fixup : AT(ADDR(__lwsync_fixup) - LOAD_OFFSET) { > __start___lwsync_fixup = .; > - *(__lwsync_fixup) > + KEEP(*(__lwsync_fixup)) > __stop___lwsync_fixup = .; > } > #ifdef CONFIG_PPC64 > . = ALIGN(8); > __fw_ftr_fixup : AT(ADDR(__fw_ftr_fixup) - LOAD_OFFSET) { > __start___fw_ftr_fixup = .; > - *(__fw_ftr_fixup) > + KEEP(*(__fw_ftr_fixup)) > __stop___fw_ftr_fixup = .; > } > #endif > @@ -226,7 +226,7 @@ SECTIONS > . = ALIGN(8); > .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) { > __machine_desc_start = . ; > - *(.machine.desc) > + KEEP(*(.machine.desc)) > __machine_desc_end = . ; > } > #ifdef CONFIG_RELOCATABLE > @@ -274,7 +274,7 @@ SECTIONS > .data : AT(ADDR(.data) - LOAD_OFFSET) { > DATA_DATA > *(.data.rel*) > - *(.sdata) > + *(SDATA_MAIN) > *(.sdata2) > *(.got.plt) *(.got) > *(.plt) > @@ -289,7 +289,7 @@ SECTIONS > > .opd : AT(ADDR(.opd) - LOAD_OFFSET) { > __start_opd = .; > - *(.opd) > + KEEP(*(.opd)) > __end_opd = .; > } > > -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, 20 Apr 2018 12:00:49 +0200 Mathieu Malaterre <malat@debian.org> wrote: > On Fri, Apr 20, 2018 at 9:34 AM, Nicholas Piggin <npiggin@gmail.com> wrote: > > This requires further changes to linker script to KEEP some tables > > and wildcard compiler generated sections into the right place. This > > includes pp32 modifications from Christophe Leroy. > > > > When compiling powernv_defconfig with this option: > > > > text data bss dec filename > > 11827621 4810490 1341080 17979191 vmlinux > > 11752437 4598858 1338776 17690071 vmlinux.dcde > > > > Resulting kernel is almost 400kB smaller (and still boots). > > > > [ppc32 numbers here] > > ^^^ > > Do you want somebody else to provide those numbers ? If you have a booting kernel, yes some more numbers would be good. Thanks, Nick -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Le 20/04/2018 à 12:36, Nicholas Piggin a écrit : > On Fri, 20 Apr 2018 12:01:34 +0200 > Christophe LEROY <christophe.leroy@c-s.fr> wrote: > >> Le 20/04/2018 à 09:34, Nicholas Piggin a écrit : >>> This requires further changes to linker script to KEEP some tables >>> and wildcard compiler generated sections into the right place. This >>> includes pp32 modifications from Christophe Leroy. >>> >>> When compiling powernv_defconfig with this option: >>> >>> text data bss dec filename >>> 11827621 4810490 1341080 17979191 vmlinux >>> 11752437 4598858 1338776 17690071 vmlinux.dcde >>> >>> Resulting kernel is almost 400kB smaller (and still boots). >>> >>> [ppc32 numbers here] Here a few results, obtained with readelf -l vmlinux | grep LOAD First val is filesz, second is memsz, for each config you get the size before and after activation of LD_DCDE, and the difference between the two. mpc83xx_defconfig: Before: 0x5ecfe0 0x60b69c After: 0x5d2fe0 0x5f04a4 Diff: 0x01a000 0x01b4c8 mpc83xx_defconfig without CONFIG_MODULE: Before: 0x5c1040 0x5e0614 After: 0x55f040 0x57d314 Diff: 0x062000 0x063300 mpc885_ads_defconfig: Before: 0x36eda4 0x38da04 After: 0x316da4 0x333764 Diff: 0x058000 0x05a2a0 Custom mpc885 config: Before: 0x719948 0x78bc34 After: 0x6b9948 0x72a99c Diff: 0x060000 0x061298 Custom mpc8321 config: Before: 0x70f714 0x7d766c After: 0x6af714 0x7763ec Diff: 0x060000 0x061280 >>> >>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> >>> --- >>> arch/powerpc/Kconfig | 1 + >>> arch/powerpc/kernel/vmlinux.lds.S | 22 +++++++++++----------- >>> 2 files changed, 12 insertions(+), 11 deletions(-) >>> >>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig >>> index c32a181a7cbb..ee6dbe2efc8b 100644 >>> --- a/arch/powerpc/Kconfig >>> +++ b/arch/powerpc/Kconfig >>> @@ -205,6 +205,7 @@ config PPC >>> select HAVE_KPROBES >>> select HAVE_KPROBES_ON_FTRACE >>> select HAVE_KRETPROBES >>> + select HAVE_LD_DEAD_CODE_DATA_ELIMINATION >>> select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS >>> select HAVE_MEMBLOCK >>> select HAVE_MEMBLOCK_NODE_MAP >>> diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S >>> index c8af90ff49f0..89381dc959ce 100644 >>> --- a/arch/powerpc/kernel/vmlinux.lds.S >>> +++ b/arch/powerpc/kernel/vmlinux.lds.S >>> @@ -89,7 +89,7 @@ SECTIONS >>> */ >>> .text BLOCK(0) : AT(ADDR(.text) - LOAD_OFFSET) { >>> #ifdef CONFIG_LD_HEAD_STUB_CATCH >>> - *(.linker_stub_catch); >>> + KEEP(*(.linker_stub_catch)); >>> . = . ; >>> #endif >>> >>> @@ -98,7 +98,7 @@ SECTIONS >>> ALIGN_FUNCTION(); >>> #endif >>> /* careful! __ftr_alt_* sections need to be close to .text */ >>> - *(.text.hot .text .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); >>> + *(.text.hot .text .text.[0-9a-zA-Z_]* .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); >> >> Why not use TEXT_MAIN here instead of .text .text.[0-9a-zA-Z_]* ? > > It's from my early patch before we added those in the generic linker > script. Yes your version looks nicer. > > Thanks, > Nick > -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, Apr 20, 2018 at 12:41 PM, Nicholas Piggin <npiggin@gmail.com> wrote: > On Fri, 20 Apr 2018 12:00:49 +0200 > Mathieu Malaterre <malat@debian.org> wrote: > >> On Fri, Apr 20, 2018 at 9:34 AM, Nicholas Piggin <npiggin@gmail.com> wrote: >> > This requires further changes to linker script to KEEP some tables >> > and wildcard compiler generated sections into the right place. This >> > includes pp32 modifications from Christophe Leroy. >> > >> > When compiling powernv_defconfig with this option: >> > >> > text data bss dec filename >> > 11827621 4810490 1341080 17979191 vmlinux >> > 11752437 4598858 1338776 17690071 vmlinux.dcde >> > >> > Resulting kernel is almost 400kB smaller (and still boots). >> > >> > [ppc32 numbers here] >> >> ^^^ >> >> Do you want somebody else to provide those numbers ? > > If you have a booting kernel, yes some more numbers would be good. I've used /boot/config-4.15.0-2-powerpc from my current debian package. Rebuild master with and without option, boot ok, load/unload module ok. $ size nick/vmlinux.with* text data bss dec hex filename 7386425 2364370 1425432 11176227 aa8923 nick/vmlinux.with 7461457 2475122 1428064 11364643 ad6923 nick/vmlinux.without This is not clear why with option the size of kernel is slightly bigger: $ du -sk nick/vmlinux.with* 124488 nick/vmlinux.with 124004 nick/vmlinux.without > Thanks, > Nick -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, 20 Apr 2018 22:08:27 +0200 Mathieu Malaterre <malat@debian.org> wrote: > On Fri, Apr 20, 2018 at 12:41 PM, Nicholas Piggin <npiggin@gmail.com> wrote: > > On Fri, 20 Apr 2018 12:00:49 +0200 > > Mathieu Malaterre <malat@debian.org> wrote: > > > >> On Fri, Apr 20, 2018 at 9:34 AM, Nicholas Piggin <npiggin@gmail.com> wrote: > >> > This requires further changes to linker script to KEEP some tables > >> > and wildcard compiler generated sections into the right place. This > >> > includes pp32 modifications from Christophe Leroy. > >> > > >> > When compiling powernv_defconfig with this option: > >> > > >> > text data bss dec filename > >> > 11827621 4810490 1341080 17979191 vmlinux > >> > 11752437 4598858 1338776 17690071 vmlinux.dcde > >> > > >> > Resulting kernel is almost 400kB smaller (and still boots). > >> > > >> > [ppc32 numbers here] > >> > >> ^^^ > >> > >> Do you want somebody else to provide those numbers ? > > > > If you have a booting kernel, yes some more numbers would be good. > > I've used /boot/config-4.15.0-2-powerpc from my current debian > package. Rebuild master with and without option, boot ok, load/unload > module ok. > > $ size nick/vmlinux.with* > text data bss dec hex filename > 7386425 2364370 1425432 11176227 aa8923 nick/vmlinux.with > 7461457 2475122 1428064 11364643 ad6923 nick/vmlinux.without > > This is not clear why with option the size of kernel is slightly bigger: > > $ du -sk nick/vmlinux.with* > 124488 nick/vmlinux.with > 124004 nick/vmlinux.without Not sure. readelf -S vmlinux may show something. To really get lots of detail, you can add to the top level Makefile: LDFLAGS_vmlinux += -M Then it will print the link map for you and other details. Actually it will output several times because we link vmlinux 2-3 times, so just take the last one. There is a lot of data there. -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Le 20/04/2018 à 22:08, Mathieu Malaterre a écrit : > On Fri, Apr 20, 2018 at 12:41 PM, Nicholas Piggin <npiggin@gmail.com> wrote: >> On Fri, 20 Apr 2018 12:00:49 +0200 >> Mathieu Malaterre <malat@debian.org> wrote: >> >>> On Fri, Apr 20, 2018 at 9:34 AM, Nicholas Piggin <npiggin@gmail.com> wrote: >>>> This requires further changes to linker script to KEEP some tables >>>> and wildcard compiler generated sections into the right place. This >>>> includes pp32 modifications from Christophe Leroy. >>>> >>>> When compiling powernv_defconfig with this option: >>>> >>>> text data bss dec filename >>>> 11827621 4810490 1341080 17979191 vmlinux >>>> 11752437 4598858 1338776 17690071 vmlinux.dcde >>>> >>>> Resulting kernel is almost 400kB smaller (and still boots). >>>> >>>> [ppc32 numbers here] >>> >>> ^^^ >>> >>> Do you want somebody else to provide those numbers ? >> >> If you have a booting kernel, yes some more numbers would be good. > > I've used /boot/config-4.15.0-2-powerpc from my current debian > package. Rebuild master with and without option, boot ok, load/unload > module ok. > > $ size nick/vmlinux.with* > text data bss dec hex filename > 7386425 2364370 1425432 11176227 aa8923 nick/vmlinux.with > 7461457 2475122 1428064 11364643 ad6923 nick/vmlinux.without > > This is not clear why with option the size of kernel is slightly bigger: The file contains also debug symbols, which might differ. Only the LOAD part of the file is interesting, that's the part you get when doing ppc-linux-objcopy vmlinux vmlinux.bin -O binary You can see it with readelf -l vmlinux Christophe > > $ du -sk nick/vmlinux.with* > 124488 nick/vmlinux.with > 124004 nick/vmlinux.without > > >> Thanks, >> Nick --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Nicholas, 2018-04-20 19:41 GMT+09:00 Nicholas Piggin <npiggin@gmail.com>: > On Fri, 20 Apr 2018 12:00:49 +0200 > Mathieu Malaterre <malat@debian.org> wrote: > >> On Fri, Apr 20, 2018 at 9:34 AM, Nicholas Piggin <npiggin@gmail.com> wrote: >> > This requires further changes to linker script to KEEP some tables >> > and wildcard compiler generated sections into the right place. This >> > includes pp32 modifications from Christophe Leroy. >> > >> > When compiling powernv_defconfig with this option: >> > >> > text data bss dec filename >> > 11827621 4810490 1341080 17979191 vmlinux >> > 11752437 4598858 1338776 17690071 vmlinux.dcde >> > >> > Resulting kernel is almost 400kB smaller (and still boots). >> > >> > [ppc32 numbers here] >> >> ^^^ >> >> Do you want somebody else to provide those numbers ? > > If you have a booting kernel, yes some more numbers would be good. > > Thanks, > Nick I applied this series because I want it to be more tested in linux-next. Some requests: - Could you provide information to replace '[ppc32 numbers here]'? (or just remove it) - V2 is welcome if you have code improvement. (I thought so from your comments) Thanks.
On Mon, 7 May 2018 09:46:43 +0900 Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > Hi Nicholas, > > 2018-04-20 19:41 GMT+09:00 Nicholas Piggin <npiggin@gmail.com>: > > On Fri, 20 Apr 2018 12:00:49 +0200 > > Mathieu Malaterre <malat@debian.org> wrote: > > > >> On Fri, Apr 20, 2018 at 9:34 AM, Nicholas Piggin <npiggin@gmail.com> wrote: > >> > This requires further changes to linker script to KEEP some tables > >> > and wildcard compiler generated sections into the right place. This > >> > includes pp32 modifications from Christophe Leroy. > >> > > >> > When compiling powernv_defconfig with this option: > >> > > >> > text data bss dec filename > >> > 11827621 4810490 1341080 17979191 vmlinux > >> > 11752437 4598858 1338776 17690071 vmlinux.dcde > >> > > >> > Resulting kernel is almost 400kB smaller (and still boots). > >> > > >> > [ppc32 numbers here] > >> > >> ^^^ > >> > >> Do you want somebody else to provide those numbers ? > > > > If you have a booting kernel, yes some more numbers would be good. > > > > Thanks, > > Nick > > > > I applied this series because I want it to be more tested in linux-next. Thank you. > Some requests: > > - Could you provide information to replace '[ppc32 numbers here]'? > (or just remove it) Yes there were some numbers reported, I can give you an updated changelog. > - V2 is welcome if you have code improvement. > (I thought so from your comments) I'll see where it ended up and send you updated patches if necessary. Thanks, Nick -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index c32a181a7cbb..ee6dbe2efc8b 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -205,6 +205,7 @@ config PPC select HAVE_KPROBES select HAVE_KPROBES_ON_FTRACE select HAVE_KRETPROBES + select HAVE_LD_DEAD_CODE_DATA_ELIMINATION select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS select HAVE_MEMBLOCK select HAVE_MEMBLOCK_NODE_MAP diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index c8af90ff49f0..89381dc959ce 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S @@ -89,7 +89,7 @@ SECTIONS */ .text BLOCK(0) : AT(ADDR(.text) - LOAD_OFFSET) { #ifdef CONFIG_LD_HEAD_STUB_CATCH - *(.linker_stub_catch); + KEEP(*(.linker_stub_catch)); . = . ; #endif @@ -98,7 +98,7 @@ SECTIONS ALIGN_FUNCTION(); #endif /* careful! __ftr_alt_* sections need to be close to .text */ - *(.text.hot .text .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); + *(.text.hot .text .text.[0-9a-zA-Z_]* .text.fixup .text.unlikely .fixup __ftr_alt_* .ref.text); SCHED_TEXT CPUIDLE_TEXT LOCK_TEXT @@ -170,10 +170,10 @@ SECTIONS .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { INIT_DATA __vtop_table_begin = .; - *(.vtop_fixup); + KEEP(*(.vtop_fixup)); __vtop_table_end = .; __ptov_table_begin = .; - *(.ptov_fixup); + KEEP(*(.ptov_fixup)); __ptov_table_end = .; } @@ -194,26 +194,26 @@ SECTIONS . = ALIGN(8); __ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) { __start___ftr_fixup = .; - *(__ftr_fixup) + KEEP(*(__ftr_fixup)) __stop___ftr_fixup = .; } . = ALIGN(8); __mmu_ftr_fixup : AT(ADDR(__mmu_ftr_fixup) - LOAD_OFFSET) { __start___mmu_ftr_fixup = .; - *(__mmu_ftr_fixup) + KEEP(*(__mmu_ftr_fixup)) __stop___mmu_ftr_fixup = .; } . = ALIGN(8); __lwsync_fixup : AT(ADDR(__lwsync_fixup) - LOAD_OFFSET) { __start___lwsync_fixup = .; - *(__lwsync_fixup) + KEEP(*(__lwsync_fixup)) __stop___lwsync_fixup = .; } #ifdef CONFIG_PPC64 . = ALIGN(8); __fw_ftr_fixup : AT(ADDR(__fw_ftr_fixup) - LOAD_OFFSET) { __start___fw_ftr_fixup = .; - *(__fw_ftr_fixup) + KEEP(*(__fw_ftr_fixup)) __stop___fw_ftr_fixup = .; } #endif @@ -226,7 +226,7 @@ SECTIONS . = ALIGN(8); .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) { __machine_desc_start = . ; - *(.machine.desc) + KEEP(*(.machine.desc)) __machine_desc_end = . ; } #ifdef CONFIG_RELOCATABLE @@ -274,7 +274,7 @@ SECTIONS .data : AT(ADDR(.data) - LOAD_OFFSET) { DATA_DATA *(.data.rel*) - *(.sdata) + *(SDATA_MAIN) *(.sdata2) *(.got.plt) *(.got) *(.plt) @@ -289,7 +289,7 @@ SECTIONS .opd : AT(ADDR(.opd) - LOAD_OFFSET) { __start_opd = .; - *(.opd) + KEEP(*(.opd)) __end_opd = .; }
This requires further changes to linker script to KEEP some tables and wildcard compiler generated sections into the right place. This includes pp32 modifications from Christophe Leroy. When compiling powernv_defconfig with this option: text data bss dec filename 11827621 4810490 1341080 17979191 vmlinux 11752437 4598858 1338776 17690071 vmlinux.dcde Resulting kernel is almost 400kB smaller (and still boots). [ppc32 numbers here] Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- arch/powerpc/Kconfig | 1 + arch/powerpc/kernel/vmlinux.lds.S | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 11 deletions(-)