From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?B?RsSBbmctcnXDrCBTw7JuZw==?= Subject: Re: [PATCH] vmlinux.lds: consider .text.{hot|unlikely}.* part of .text too Date: Wed, 17 Jun 2020 14:27:05 -0700 Message-ID: <20200617212705.tq2q6bi446gydymo@google.com> References: <20200617210613.95432-1-ndesaulniers@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Return-path: Content-Disposition: inline In-Reply-To: <20200617210613.95432-1-ndesaulniers@google.com> Sender: stable-owner@vger.kernel.org To: Nick Desaulniers Cc: Arnd Bergmann , clang-built-linux@googlegroups.com, Kees Cook , stable@vger.kernel.org, Jian Cai , Luis Lozano , Manoj Gupta , linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-arch.vger.kernel.org On 2020-06-17, Nick Desaulniers wrote: >ld.bfd's internal linker script considers .text.hot AND .text.hot.* to >be part of .text, as well as .text.unlikely and .text.unlikely.*. >ld.lld will produce .text.hot.*/.text.unlikely.* sections. Correction to this sentence. lld is not relevant here. -ffunction-sections combined with profile-guided optimization can produce .text.hot.* .text.unlikely.* sections. Newer clang may produce .text.hot. .text.unlikely. (without suffix, but with a trailing dot) when -fno-unique-section-names is specified, as an optimization to make .strtab smaller. We've already seen that GCC can place main in .text.startup without -ffunction-sections. There may be other non -ffunction-sections cases for .text.hot.* or .text.unlikely.*. So it is definitely a good idea to be more specific even if we don't care about -ffunction-sections for now. >Make sure to group these together. Otherwise these orphan sections may >be placed outside of the the _stext/_etext boundaries. > >Cc: stable@vger.kernel.org >Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=add44f8d5c5c05e08b11e033127a744d61c26aee >Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=1de778ed23ce7492c523d5850c6c6dbb34152655 >Link: https://reviews.llvm.org/D79600 >Reported-by: Jian Cai >Debugged-by: Luis Lozano >Suggested-by: Fāng-ruì Sòng >Tested-by: Luis Lozano >Tested-by: Manoj Gupta >Signed-off-by: Nick Desaulniers >--- > include/asm-generic/vmlinux.lds.h | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > >diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h >index d7c7c7f36c4a..fe5aaef169e3 100644 >--- a/include/asm-generic/vmlinux.lds.h >+++ b/include/asm-generic/vmlinux.lds.h >@@ -560,7 +560,9 @@ > */ > #define TEXT_TEXT \ > ALIGN_FUNCTION(); \ >- *(.text.hot TEXT_MAIN .text.fixup .text.unlikely) \ >+ *(.text.hot .text.hot.*) \ >+ *(TEXT_MAIN .text.fixup) \ >+ *(.text.unlikely .text.unlikely.*) \ > NOINSTR_TEXT \ > *(.text..refcount) \ > *(.ref.text) \ >-- >2.27.0.290.gba653c62da-goog > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39292 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726758AbgFQV1J (ORCPT ); Wed, 17 Jun 2020 17:27:09 -0400 Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 553CFC06174E for ; Wed, 17 Jun 2020 14:27:09 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id v14so1917752pgl.1 for ; Wed, 17 Jun 2020 14:27:09 -0700 (PDT) Date: Wed, 17 Jun 2020 14:27:05 -0700 From: =?utf-8?B?RsSBbmctcnXDrCBTw7JuZw==?= Subject: Re: [PATCH] vmlinux.lds: consider .text.{hot|unlikely}.* part of .text too Message-ID: <20200617212705.tq2q6bi446gydymo@google.com> References: <20200617210613.95432-1-ndesaulniers@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20200617210613.95432-1-ndesaulniers@google.com> Sender: linux-arch-owner@vger.kernel.org List-ID: To: Nick Desaulniers Cc: Arnd Bergmann , clang-built-linux@googlegroups.com, Kees Cook , stable@vger.kernel.org, Jian Cai , Luis Lozano , Manoj Gupta , linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org Message-ID: <20200617212705.6fXmVK13ZTBxcHzOCHnEvX-qG8oBWBPqbGXrdbUI6fs@z> On 2020-06-17, Nick Desaulniers wrote: >ld.bfd's internal linker script considers .text.hot AND .text.hot.* to >be part of .text, as well as .text.unlikely and .text.unlikely.*. >ld.lld will produce .text.hot.*/.text.unlikely.* sections. Correction to this sentence. lld is not relevant here. -ffunction-sections combined with profile-guided optimization can produce .text.hot.* .text.unlikely.* sections. Newer clang may produce .text.hot. .text.unlikely. (without suffix, but with a trailing dot) when -fno-unique-section-names is specified, as an optimization to make .strtab smaller. We've already seen that GCC can place main in .text.startup without -ffunction-sections. There may be other non -ffunction-sections cases for .text.hot.* or .text.unlikely.*. So it is definitely a good idea to be more specific even if we don't care about -ffunction-sections for now. >Make sure to group these together. Otherwise these orphan sections may >be placed outside of the the _stext/_etext boundaries. > >Cc: stable@vger.kernel.org >Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=add44f8d5c5c05e08b11e033127a744d61c26aee >Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=1de778ed23ce7492c523d5850c6c6dbb34152655 >Link: https://reviews.llvm.org/D79600 >Reported-by: Jian Cai >Debugged-by: Luis Lozano >Suggested-by: Fāng-ruì Sòng >Tested-by: Luis Lozano >Tested-by: Manoj Gupta >Signed-off-by: Nick Desaulniers >--- > include/asm-generic/vmlinux.lds.h | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > >diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h >index d7c7c7f36c4a..fe5aaef169e3 100644 >--- a/include/asm-generic/vmlinux.lds.h >+++ b/include/asm-generic/vmlinux.lds.h >@@ -560,7 +560,9 @@ > */ > #define TEXT_TEXT \ > ALIGN_FUNCTION(); \ >- *(.text.hot TEXT_MAIN .text.fixup .text.unlikely) \ >+ *(.text.hot .text.hot.*) \ >+ *(TEXT_MAIN .text.fixup) \ >+ *(.text.unlikely .text.unlikely.*) \ > NOINSTR_TEXT \ > *(.text..refcount) \ > *(.ref.text) \ >-- >2.27.0.290.gba653c62da-goog >