* Re: [PATCH v2] x86_64: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S [not found] ` <20201103014602.GA3271702@ubuntu-m3-large-x86> @ 2020-11-03 22:43 ` Nick Desaulniers 0 siblings, 0 replies; 2+ messages in thread From: Nick Desaulniers @ 2020-11-03 22:43 UTC (permalink / raw) To: Nathan Chancellor Cc: Fangrui Song, maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT), Thomas Gleixner, Ingo Molnar, Borislav Petkov, clang-built-linux, Jian Cai, Sami Tolvanen, # 3.4.x, LKML + LKML so I can find this easier to fetch via b4 On Mon, Nov 2, 2020 at 5:46 PM Nathan Chancellor <natechancellor@gmail.com> wrote: > > On Mon, Nov 02, 2020 at 05:23:58PM -0800, 'Fangrui Song' via Clang Built Linux wrote: > > Commit 393f203f5fd5 ("x86_64: kasan: add interceptors for > > memset/memmove/memcpy functions") added .weak directives to > > arch/x86/lib/mem*_64.S instead of changing the existing ENTRY macros to > > WEAK. This can lead to the assembly snippet `.weak memcpy ... .globl > > memcpy` which will produce a STB_WEAK memcpy with GNU as but STB_GLOBAL > > memcpy with LLVM's integrated assembler before LLVM 12. LLVM 12 (since > > https://reviews.llvm.org/D90108) will error on such an overridden symbol > > binding. > > > > Commit ef1e03152cb0 ("x86/asm: Make some functions local") changed ENTRY in > > arch/x86/lib/memcpy_64.S to SYM_FUNC_START_LOCAL, which was ineffective due to > > the preceding .weak directive. > > > > Use the appropriate SYM_FUNC_START_WEAK instead. > > > > Fixes: 393f203f5fd5 ("x86_64: kasan: add interceptors for memset/memmove/memcpy functions") > > Fixes: ef1e03152cb0 ("x86/asm: Make some functions local") > > Reported-by: Sami Tolvanen <samitolvanen@google.com> > > Signed-off-by: Fangrui Song <maskray@google.com> > > Cc: <stable@vger.kernel.org> > > This resolves the build error I see with LLVM_IAS=1 and ToT LLVM. > > Tested-by: Nathan Chancellor <natechancellor@gmail.com> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> Tested-by: Nick Desaulniers <ndesaulniers@google.com> > > > --- > > Changes in v2 > > * Correct the message: SYM_FUNC_START_WEAK was not available at commit 393f203f5fd5. > > * Mention Fixes: ef1e03152cb0 > > --- > > arch/x86/lib/memcpy_64.S | 4 +--- > > arch/x86/lib/memmove_64.S | 4 +--- > > arch/x86/lib/memset_64.S | 4 +--- > > 3 files changed, 3 insertions(+), 9 deletions(-) > > > > diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S > > index 037faac46b0c..1e299ac73c86 100644 > > --- a/arch/x86/lib/memcpy_64.S > > +++ b/arch/x86/lib/memcpy_64.S > > @@ -16,8 +16,6 @@ > > * to a jmp to memcpy_erms which does the REP; MOVSB mem copy. > > */ > > > > -.weak memcpy > > - > > /* > > * memcpy - Copy a memory block. > > * > > @@ -30,7 +28,7 @@ > > * rax original destination > > */ > > SYM_FUNC_START_ALIAS(__memcpy) > > -SYM_FUNC_START_LOCAL(memcpy) > > +SYM_FUNC_START_WEAK(memcpy) > > ALTERNATIVE_2 "jmp memcpy_orig", "", X86_FEATURE_REP_GOOD, \ > > "jmp memcpy_erms", X86_FEATURE_ERMS > > > > diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S > > index 7ff00ea64e4f..41902fe8b859 100644 > > --- a/arch/x86/lib/memmove_64.S > > +++ b/arch/x86/lib/memmove_64.S > > @@ -24,9 +24,7 @@ > > * Output: > > * rax: dest > > */ > > -.weak memmove > > - > > -SYM_FUNC_START_ALIAS(memmove) > > +SYM_FUNC_START_WEAK(memmove) > > SYM_FUNC_START(__memmove) > > > > mov %rdi, %rax > > diff --git a/arch/x86/lib/memset_64.S b/arch/x86/lib/memset_64.S > > index 9ff15ee404a4..0bfd26e4ca9e 100644 > > --- a/arch/x86/lib/memset_64.S > > +++ b/arch/x86/lib/memset_64.S > > @@ -6,8 +6,6 @@ > > #include <asm/alternative-asm.h> > > #include <asm/export.h> > > > > -.weak memset > > - > > /* > > * ISO C memset - set a memory block to a byte value. This function uses fast > > * string to get better performance than the original function. The code is > > @@ -19,7 +17,7 @@ > > * > > * rax original destination > > */ > > -SYM_FUNC_START_ALIAS(memset) > > +SYM_FUNC_START_WEAK(memset) > > SYM_FUNC_START(__memset) > > /* > > * Some CPUs support enhanced REP MOVSB/STOSB feature. It is recommended > > -- -- Thanks, ~Nick Desaulniers ^ permalink raw reply [flat|nested] 2+ messages in thread
* [tip: x86/urgent] x86/lib: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S [not found] <20201103012358.168682-1-maskray@google.com> [not found] ` <20201103014602.GA3271702@ubuntu-m3-large-x86> @ 2020-11-04 11:57 ` tip-bot2 for Fangrui Song 1 sibling, 0 replies; 2+ messages in thread From: tip-bot2 for Fangrui Song @ 2020-11-04 11:57 UTC (permalink / raw) To: linux-tip-commits Cc: Sami Tolvanen, Fangrui Song, Borislav Petkov, Nick Desaulniers, Nathan Chancellor, stable, x86, LKML The following commit has been merged into the x86/urgent branch of tip: Commit-ID: 4d6ffa27b8e5116c0abb318790fd01d4e12d75e6 Gitweb: https://git.kernel.org/tip/4d6ffa27b8e5116c0abb318790fd01d4e12d75e6 Author: Fangrui Song <maskray@google.com> AuthorDate: Mon, 02 Nov 2020 17:23:58 -08:00 Committer: Borislav Petkov <bp@suse.de> CommitterDate: Wed, 04 Nov 2020 12:30:20 +01:00 x86/lib: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S Commit 393f203f5fd5 ("x86_64: kasan: add interceptors for memset/memmove/memcpy functions") added .weak directives to arch/x86/lib/mem*_64.S instead of changing the existing ENTRY macros to WEAK. This can lead to the assembly snippet .weak memcpy ... .globl memcpy which will produce a STB_WEAK memcpy with GNU as but STB_GLOBAL memcpy with LLVM's integrated assembler before LLVM 12. LLVM 12 (since https://reviews.llvm.org/D90108) will error on such an overridden symbol binding. Commit ef1e03152cb0 ("x86/asm: Make some functions local") changed ENTRY in arch/x86/lib/memcpy_64.S to SYM_FUNC_START_LOCAL, which was ineffective due to the preceding .weak directive. Use the appropriate SYM_FUNC_START_WEAK instead. Fixes: 393f203f5fd5 ("x86_64: kasan: add interceptors for memset/memmove/memcpy functions") Fixes: ef1e03152cb0 ("x86/asm: Make some functions local") Reported-by: Sami Tolvanen <samitolvanen@google.com> Signed-off-by: Fangrui Song <maskray@google.com> Signed-off-by: Borislav Petkov <bp@suse.de> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> Tested-by: Nathan Chancellor <natechancellor@gmail.com> Tested-by: Nick Desaulniers <ndesaulniers@google.com> Cc: <stable@vger.kernel.org> Link: https://lkml.kernel.org/r/20201103012358.168682-1-maskray@google.com --- arch/x86/lib/memcpy_64.S | 4 +--- arch/x86/lib/memmove_64.S | 4 +--- arch/x86/lib/memset_64.S | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S index 037faac..1e299ac 100644 --- a/arch/x86/lib/memcpy_64.S +++ b/arch/x86/lib/memcpy_64.S @@ -16,8 +16,6 @@ * to a jmp to memcpy_erms which does the REP; MOVSB mem copy. */ -.weak memcpy - /* * memcpy - Copy a memory block. * @@ -30,7 +28,7 @@ * rax original destination */ SYM_FUNC_START_ALIAS(__memcpy) -SYM_FUNC_START_LOCAL(memcpy) +SYM_FUNC_START_WEAK(memcpy) ALTERNATIVE_2 "jmp memcpy_orig", "", X86_FEATURE_REP_GOOD, \ "jmp memcpy_erms", X86_FEATURE_ERMS diff --git a/arch/x86/lib/memmove_64.S b/arch/x86/lib/memmove_64.S index 7ff00ea..41902fe 100644 --- a/arch/x86/lib/memmove_64.S +++ b/arch/x86/lib/memmove_64.S @@ -24,9 +24,7 @@ * Output: * rax: dest */ -.weak memmove - -SYM_FUNC_START_ALIAS(memmove) +SYM_FUNC_START_WEAK(memmove) SYM_FUNC_START(__memmove) mov %rdi, %rax diff --git a/arch/x86/lib/memset_64.S b/arch/x86/lib/memset_64.S index 9ff15ee..0bfd26e 100644 --- a/arch/x86/lib/memset_64.S +++ b/arch/x86/lib/memset_64.S @@ -6,8 +6,6 @@ #include <asm/alternative-asm.h> #include <asm/export.h> -.weak memset - /* * ISO C memset - set a memory block to a byte value. This function uses fast * string to get better performance than the original function. The code is @@ -19,7 +17,7 @@ * * rax original destination */ -SYM_FUNC_START_ALIAS(memset) +SYM_FUNC_START_WEAK(memset) SYM_FUNC_START(__memset) /* * Some CPUs support enhanced REP MOVSB/STOSB feature. It is recommended ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-11-04 11:59 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20201103012358.168682-1-maskray@google.com>
[not found] ` <20201103014602.GA3271702@ubuntu-m3-large-x86>
2020-11-03 22:43 ` [PATCH v2] x86_64: Change .weak to SYM_FUNC_START_WEAK for arch/x86/lib/mem*_64.S Nick Desaulniers
2020-11-04 11:57 ` [tip: x86/urgent] x86/lib: " tip-bot2 for Fangrui Song
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®