From: Kees Cook <keescook@chromium.org>
To: Sami Tolvanen <samitolvanen@google.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
Will Deacon <will@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Paul E. McKenney" <paulmck@kernel.org>,
Nick Desaulniers <ndesaulniers@google.com>,
clang-built-linux@googlegroups.com,
kernel-hardening@lists.openwall.com, linux-arch@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-pci@vger.kernel.org, x86@kernel.org
Subject: Re: [PATCH v6 13/25] kbuild: lto: merge module sections
Date: Wed, 14 Oct 2020 15:49:10 -0700 [thread overview]
Message-ID: <202010141548.47CB1BC@keescook> (raw)
In-Reply-To: <20201013003203.4168817-14-samitolvanen@google.com>
On Mon, Oct 12, 2020 at 05:31:51PM -0700, Sami Tolvanen wrote:
> LLD always splits sections with LTO, which increases module sizes. This
> change adds linker script rules to merge the split sections in the final
> module.
>
> Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
> Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
> Reviewed-by: Kees Cook <keescook@chromium.org>
> ---
> scripts/module.lds.S | 28 ++++++++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
> diff --git a/scripts/module.lds.S b/scripts/module.lds.S
> index 69b9b71a6a47..037120173a22 100644
> --- a/scripts/module.lds.S
> +++ b/scripts/module.lds.S
> @@ -25,5 +25,33 @@ SECTIONS {
> __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
> }
>
> +#ifdef CONFIG_LTO_CLANG
In looking at this again -- is this ifdef needed? Couldn't this be done
unconditionally? (Which would make it an independent change...)
-Kees
> +/*
> + * With CONFIG_LTO_CLANG, LLD always enables -fdata-sections and
> + * -ffunction-sections, which increases the size of the final module.
> + * Merge the split sections in the final binary.
> + */
> +SECTIONS {
> + __patchable_function_entries : { *(__patchable_function_entries) }
> +
> + .bss : {
> + *(.bss .bss.[0-9a-zA-Z_]*)
> + *(.bss..L*)
> + }
> +
> + .data : {
> + *(.data .data.[0-9a-zA-Z_]*)
> + *(.data..L*)
> + }
> +
> + .rodata : {
> + *(.rodata .rodata.[0-9a-zA-Z_]*)
> + *(.rodata..L*)
> + }
> +
> + .text : { *(.text .text.[0-9a-zA-Z_]*) }
> +}
> +#endif
> +
> /* bring in arch-specific sections */
> #include <asm/module.lds.h>
> --
> 2.28.0.1011.ga647a8990f-goog
>
--
Kees Cook
next prev parent reply other threads:[~2020-10-15 2:24 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-13 0:31 [PATCH v6 00/25] Add support for Clang LTO Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 01/25] kbuild: preprocess module linker script Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 02/25] objtool: Add a pass for generating __mcount_loc Sami Tolvanen
2020-10-14 16:50 ` Ingo Molnar
2020-10-14 18:21 ` Peter Zijlstra
2020-10-15 20:10 ` Josh Poimboeuf
2020-10-13 0:31 ` [PATCH v6 03/25] objtool: Don't autodetect vmlinux.o Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 04/25] tracing: move function tracer options to Kconfig Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 05/25] tracing: add support for objtool mcount Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 06/25] x86, build: use " Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 07/25] treewide: remove DISABLE_LTO Sami Tolvanen
2020-10-14 22:43 ` Kees Cook
2020-10-17 1:46 ` Masahiro Yamada
2020-10-13 0:31 ` [PATCH v6 08/25] kbuild: add support for Clang LTO Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 09/25] kbuild: lto: fix module versioning Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 10/25] objtool: Split noinstr validation from --vmlinux Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 11/25] kbuild: lto: postpone objtool Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 12/25] kbuild: lto: limit inlining Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 13/25] kbuild: lto: merge module sections Sami Tolvanen
2020-10-14 22:49 ` Kees Cook [this message]
2020-10-20 16:42 ` Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 14/25] kbuild: lto: remove duplicate dependencies from .mod files Sami Tolvanen
2020-10-14 22:50 ` Kees Cook
2020-12-03 17:59 ` Masahiro Yamada
2020-12-03 18:47 ` Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 15/25] init: lto: ensure initcall ordering Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 16/25] init: lto: fix PREL32 relocations Sami Tolvanen
2020-10-14 22:53 ` Kees Cook
2020-10-15 0:12 ` Jann Horn
2020-10-13 0:31 ` [PATCH v6 17/25] PCI: Fix PREL32 relocations for LTO Sami Tolvanen
2020-10-14 22:58 ` Kees Cook
2020-10-13 0:31 ` [PATCH v6 18/25] modpost: lto: strip .lto from module names Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 19/25] scripts/mod: disable LTO for empty.c Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 20/25] efi/libstub: disable LTO Sami Tolvanen
2020-10-13 0:31 ` [PATCH v6 21/25] drivers/misc/lkdtm: disable LTO for rodata.o Sami Tolvanen
2020-10-13 0:32 ` [PATCH v6 22/25] x86/asm: annotate indirect jumps Sami Tolvanen
2020-10-14 22:46 ` Kees Cook
2020-10-14 23:23 ` Jann Horn
2020-10-15 10:22 ` Peter Zijlstra
2020-10-15 20:39 ` Josh Poimboeuf
2020-10-20 16:45 ` Sami Tolvanen
2020-10-20 18:52 ` Josh Poimboeuf
2020-10-20 19:24 ` Sami Tolvanen
2020-10-21 8:56 ` Peter Zijlstra
2020-10-21 9:08 ` Peter Zijlstra
2020-10-21 9:32 ` Peter Zijlstra
2020-10-21 21:27 ` Josh Poimboeuf
2020-10-22 7:25 ` Peter Zijlstra
2020-10-23 17:48 ` Sami Tolvanen
2020-10-23 18:04 ` Nick Desaulniers
2020-10-21 15:01 ` Sami Tolvanen
2020-10-22 0:22 ` Sami Tolvanen
2020-10-23 17:36 ` Sami Tolvanen
2020-11-09 23:11 ` Sami Tolvanen
2020-11-10 2:29 ` Josh Poimboeuf
2020-11-10 3:18 ` Nick Desaulniers
2020-11-10 4:48 ` Sami Tolvanen
2020-11-10 16:11 ` Josh Poimboeuf
2020-11-10 17:46 ` Josh Poimboeuf
2020-11-10 18:59 ` Sami Tolvanen
2020-11-13 19:54 ` Josh Poimboeuf
2020-11-13 20:24 ` Sami Tolvanen
2020-11-13 20:52 ` Josh Poimboeuf
2020-11-13 22:34 ` Josh Poimboeuf
2020-11-13 22:54 ` Sami Tolvanen
2020-11-13 22:56 ` Josh Poimboeuf
2020-11-13 23:31 ` Sami Tolvanen
2020-11-14 0:49 ` Josh Poimboeuf
2020-10-21 9:51 ` Peter Zijlstra
2020-10-21 18:30 ` Josh Poimboeuf
2020-10-13 0:32 ` [PATCH v6 23/25] x86, vdso: disable LTO only for vDSO Sami Tolvanen
2020-10-13 0:32 ` [PATCH v6 24/25] x86, cpu: disable LTO for cpu.c Sami Tolvanen
2020-10-13 0:32 ` [PATCH v6 25/25] x86, build: allow LTO_CLANG and THINLTO to be selected Sami Tolvanen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202010141548.47CB1BC@keescook \
--to=keescook@chromium.org \
--cc=clang-built-linux@googlegroups.com \
--cc=gregkh@linuxfoundation.org \
--cc=kernel-hardening@lists.openwall.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=ndesaulniers@google.com \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=samitolvanen@google.com \
--cc=will@kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).