From: Fangrui Song
mainline inclusion
from mainline-5.11-rc1
commit 735e8d93dc2b107f7891a9c2b1c4cfbea1fcbbbc
category: feature
feature: ARM KASAN support
issue: #I3ZXZF
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i...
-------------------------------------------------
Commit d6d51a96c7d6 ("ARM: 9014/2: Replace string mem* functions for
KASan") add .weak directives to memcpy/memmove/memset to avoid collision
with KASAN interceptors.
This does not work with LLVM's integrated assembler (the assembly snippet
`.weak memcpy ... .globl memcpy` produces a STB_GLOBAL memcpy while GNU as
produces a STB_WEAK memcpy). LLVM 12 (since https://reviews.llvm.org/D90108)
will error on such an overridden symbol binding.
Use the appropriate WEAK macro instead.
Link: https://github.com/ClangBuiltLinux/linux/issues/1190
Reviewed-by: Jing Xiangfeng
Signed-off-by: Chen Jun
Signed-off-by: Yu Changchun
---
arch/arm/lib/memcpy.S | 3 +--
arch/arm/lib/memmove.S | 3 +--
arch/arm/lib/memset.S | 3 +--
3 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/arch/arm/lib/memcpy.S b/arch/arm/lib/memcpy.S
index ad4625d16e11..e4caf48c089f 100644
--- a/arch/arm/lib/memcpy.S
+++ b/arch/arm/lib/memcpy.S
@@ -58,10 +58,9 @@
/* Prototype: void *memcpy(void *dest, const void *src, size_t n); */
-.weak memcpy
ENTRY(__memcpy)
ENTRY(mmiocpy)
-ENTRY(memcpy)
+WEAK(memcpy)
#include "copy_template.S"
diff --git a/arch/arm/lib/memmove.S b/arch/arm/lib/memmove.S
index fd123ea5a5a4..6fecc12a1f51 100644
--- a/arch/arm/lib/memmove.S
+++ b/arch/arm/lib/memmove.S
@@ -24,9 +24,8 @@
* occurring in the opposite direction.
*/
-.weak memmove
ENTRY(__memmove)
-ENTRY(memmove)
+WEAK(memmove)
UNWIND( .fnstart )
subs ip, r0, r1
diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S
index 0e7ff0423f50..9817cb258c1a 100644
--- a/arch/arm/lib/memset.S
+++ b/arch/arm/lib/memset.S
@@ -13,10 +13,9 @@
.text
.align 5
-.weak memset
ENTRY(__memset)
ENTRY(mmioset)
-ENTRY(memset)
+WEAK(memset)
UNWIND( .fnstart )
ands r3, r0, #3 @ 1 unaligned?
mov ip, r0 @ preserve r0 as return value
--
2.22.0