From: Kees Cook <kees@kernel.org>
To: Rong Xu <xur@google.com>
Cc: Alice Ryhl <aliceryhl@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Arnd Bergmann <arnd@arndb.de>, Bill Wendling <morbo@google.com>,
Borislav Petkov <bp@alien8.de>, Breno Leitao <leitao@debian.org>,
Brian Gerst <brgerst@gmail.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
David Li <davidxl@google.com>, Han Shen <shenhan@google.com>,
Heiko Carstens <hca@linux.ibm.com>,
"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
Jann Horn <jannh@google.com>, Jonathan Corbet <corbet@lwn.net>,
Josh Poimboeuf <jpoimboe@kernel.org>,
Juergen Gross <jgross@suse.com>,
Justin Stitt <justinstitt@google.com>,
Masahiro Yamada <masahiroy@kernel.org>,
"Mike Rapoport (IBM)" <rppt@kernel.org>,
Nathan Chancellor <nathan@kernel.org>,
Nick Desaulniers <ndesaulniers@google.com>,
Nicolas Schier <nicolas@fjasle.eu>,
"Paul E. McKenney" <paulmck@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Sami Tolvanen <samitolvanen@google.com>,
Thomas Gleixner <tglx@linutronix.de>,
Wei Yang <richard.weiyang@gmail.com>,
workflows@vger.kernel.org,
Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>,
Maksim Panchenko <max4bolt@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Andreas Larsson <andreas@gaisler.com>,
Yonghong Song <yonghong.song@linux.dev>,
Yabin Cui <yabinc@google.com>,
Krzysztof Pszeniczny <kpszeniczny@google.com>,
Sriraman Tallam <tmsriram@google.com>,
Stephane Eranian <eranian@google.com>,
x86@kernel.org, linux-arch@vger.kernel.org,
sparclinux@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
llvm@lists.linux.dev
Subject: Re: [PATCH v6 3/7] Adjust symbol ordering in text output section
Date: Mon, 28 Oct 2024 17:05:02 -0700 [thread overview]
Message-ID: <202410281700.6BE0413F@keescook> (raw)
In-Reply-To: <20241026051410.2819338-4-xur@google.com>
On Fri, Oct 25, 2024 at 10:14:05PM -0700, Rong Xu wrote:
> When the -ffunction-sections compiler option is enabled, each function
> is placed in a separate section named .text.function_name rather than
> putting all functions in a single .text section.
>
> However, using -function-sections can cause problems with the
> linker script. The comments included in include/asm-generic/vmlinux.lds.h
> note these issues.:
> “TEXT_MAIN here will match .text.fixup and .text.unlikely if dead
> code elimination is enabled, so these sections should be converted
> to use ".." first.”
>
> It is unclear whether there is a straightforward method for converting
> a suffix to "..".
While I'm not a fan of the potential loss of a page, I'm not aware of
a way to do this renaming. If we want to keep these as "cold", then this
is probably the best way to do it.
> This patch modifies the order of subsections within the text output
> section. Specifically, it repositions sections with certain fixed patterns
> (for example .text.unlikely) before TEXT_MAIN, ensuring that they are
> grouped and matched together. It also places .text.hot section at the
> beginning of a page to help the TLB performance.
>
> Note that the limitation arises because the linker script employs glob
> patterns instead of regular expressions for string matching. While there
> is a method to maintain the current order using complex patterns, this
> significantly complicates the pattern and increases the likelihood of
> errors.
>
> This patch also changes vmlinux.lds.S for the sparc64 architecture to
> accommodate specific symbol placement requirements.
>
> Co-developed-by: Han Shen <shenhan@google.com>
> Signed-off-by: Han Shen <shenhan@google.com>
> Signed-off-by: Rong Xu <xur@google.com>
> Suggested-by: Sriraman Tallam <tmsriram@google.com>
> Suggested-by: Krzysztof Pszeniczny <kpszeniczny@google.com>
> Tested-by: Yonghong Song <yonghong.song@linux.dev>
> Tested-by: Yabin Cui <yabinc@google.com>
> Change-Id: I5202d40bc7e24f93c2bfb2f0d987e9dc57dec1b1
Reviewed-by: Kees Cook <kees@kernel.org>
-Kees
> ---
> arch/sparc/kernel/vmlinux.lds.S | 5 +++++
> include/asm-generic/vmlinux.lds.h | 19 ++++++++++++-------
> 2 files changed, 17 insertions(+), 7 deletions(-)
>
> diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S
> index d317a843f7ea9..f1b86eb303404 100644
> --- a/arch/sparc/kernel/vmlinux.lds.S
> +++ b/arch/sparc/kernel/vmlinux.lds.S
> @@ -48,6 +48,11 @@ SECTIONS
> {
> _text = .;
> HEAD_TEXT
> + ALIGN_FUNCTION();
> +#ifdef CONFIG_SPARC64
> + /* Match text section symbols in head_64.S first */
> + *head_64.o(.text)
> +#endif
> TEXT_TEXT
> SCHED_TEXT
> LOCK_TEXT
> diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
> index eeadbaeccf88b..fd901951549c0 100644
> --- a/include/asm-generic/vmlinux.lds.h
> +++ b/include/asm-generic/vmlinux.lds.h
> @@ -553,19 +553,24 @@
> * .text section. Map to function alignment to avoid address changes
> * during second ld run in second ld pass when generating System.map
> *
> - * TEXT_MAIN here will match .text.fixup and .text.unlikely if dead
> - * code elimination is enabled, so these sections should be converted
> - * to use ".." first.
> + * TEXT_MAIN here will match symbols with a fixed pattern (for example,
> + * .text.hot or .text.unlikely) if dead code elimination or
> + * function-section is enabled. Match these symbols first before
> + * TEXT_MAIN to ensure they are grouped together.
> + *
> + * Also placing .text.hot section at the beginning of a page, this
> + * would help the TLB performance.
> */
> #define TEXT_TEXT \
> ALIGN_FUNCTION(); \
> + *(.text.asan.* .text.tsan.*) \
> + *(.text.unknown .text.unknown.*) \
> + *(.text.unlikely .text.unlikely.*) \
> + . = ALIGN(PAGE_SIZE); \
> *(.text.hot .text.hot.*) \
> *(TEXT_MAIN .text.fixup) \
> - *(.text.unlikely .text.unlikely.*) \
> - *(.text.unknown .text.unknown.*) \
> NOINSTR_TEXT \
> - *(.ref.text) \
> - *(.text.asan.* .text.tsan.*)
> + *(.ref.text)
>
>
> /* sched.text is aling to function alignment to secure we have same
> --
> 2.47.0.163.g1226f6d8fa-goog
>
--
Kees Cook
next prev parent reply other threads:[~2024-10-29 0:05 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-26 5:14 [PATCH v6 0/7] Add AutoFDO and Propeller support for Clang build Rong Xu
2024-10-26 5:14 ` [PATCH v6 1/7] Add AutoFDO " Rong Xu
2024-10-29 0:08 ` Kees Cook
2024-10-26 5:14 ` [PATCH v6 2/7] objtool: Fix unreachable instruction warnings for weak functions Rong Xu
2024-10-29 0:16 ` Kees Cook
2024-10-29 0:18 ` H. Peter Anvin
2024-10-29 5:51 ` Rong Xu
2024-10-29 0:43 ` Josh Poimboeuf
2024-10-26 5:14 ` [PATCH v6 3/7] Adjust symbol ordering in text output section Rong Xu
2024-10-29 0:05 ` Kees Cook [this message]
2024-11-01 18:05 ` Masahiro Yamada
2024-11-01 18:37 ` Rong Xu
2024-11-01 22:03 ` Masahiro Yamada
2024-11-09 15:38 ` Klara Modin
2024-11-11 20:43 ` Rong Xu
2024-11-11 21:32 ` Klara Modin
2024-11-11 22:39 ` Rong Xu
2024-11-12 5:38 ` Rong Xu
2024-11-12 7:45 ` Klara Modin
2024-11-12 20:13 ` Rong Xu
2024-10-26 5:14 ` [PATCH v6 4/7] Add markers for text_unlikely and text_hot sections Rong Xu
2024-10-28 23:56 ` Kees Cook
2024-10-29 0:05 ` Kees Cook
2024-10-26 5:14 ` [PATCH v6 5/7] AutoFDO: Enable -ffunction-sections for the AutoFDO build Rong Xu
2024-10-29 0:10 ` Kees Cook
2024-10-26 5:14 ` [PATCH v6 6/7] AutoFDO: Enable machine function split optimization for AutoFDO Rong Xu
2024-10-29 0:13 ` Kees Cook
2024-10-26 5:14 ` [PATCH v6 7/7] Add Propeller configuration for kernel build Rong Xu
2024-10-29 0:14 ` Kees Cook
2024-10-27 22:17 ` [PATCH v6 0/7] Add AutoFDO and Propeller support for Clang build Nathan Chancellor
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=202410281700.6BE0413F@keescook \
--to=kees@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=aliceryhl@google.com \
--cc=andreas@gaisler.com \
--cc=arnd@arndb.de \
--cc=bp@alien8.de \
--cc=brgerst@gmail.com \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=davidxl@google.com \
--cc=eranian@google.com \
--cc=hca@linux.ibm.com \
--cc=hpa@zytor.com \
--cc=jannh@google.com \
--cc=jgross@suse.com \
--cc=jpoimboe@kernel.org \
--cc=justinstitt@google.com \
--cc=kpszeniczny@google.com \
--cc=leitao@debian.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=masahiroy@kernel.org \
--cc=max4bolt@gmail.com \
--cc=miguel.ojeda.sandonis@gmail.com \
--cc=mingo@redhat.com \
--cc=morbo@google.com \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=nicolas@fjasle.eu \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.org \
--cc=richard.weiyang@gmail.com \
--cc=rppt@kernel.org \
--cc=samitolvanen@google.com \
--cc=shenhan@google.com \
--cc=sparclinux@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=tmsriram@google.com \
--cc=workflows@vger.kernel.org \
--cc=x86@kernel.org \
--cc=xur@google.com \
--cc=yabinc@google.com \
--cc=yonghong.song@linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.