arm64: Change .weak to SYM_FUNC_START_WEAK_PI for arch/arm64/lib/mem*.S
Commit39d114ddc6("arm64: add KASAN support") added .weak directives to arch/arm64/lib/mem*.S instead of changing the existing SYM_FUNC_START_PI macros. 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. Use the appropriate SYM_FUNC_START_WEAK_PI instead. Fixes:39d114ddc6("arm64: add KASAN support") Reported-by: Sami Tolvanen <samitolvanen@google.com> Signed-off-by: Fangrui Song <maskray@google.com> Tested-by: Sami Tolvanen <samitolvanen@google.com> Tested-by: Nick Desaulniers <ndesaulniers@google.com> Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/20201029181951.1866093-1-maskray@google.com Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
		
							parent
							
								
									ce3d31ad3c
								
							
						
					
					
						commit
						ec9d78070d
					
				| @ -56,9 +56,8 @@ | ||||
| 	stp \reg1, \reg2, [\ptr], \val | ||||
| 	.endm | ||||
| 
 | ||||
| 	.weak memcpy
 | ||||
| SYM_FUNC_START_ALIAS(__memcpy) | ||||
| SYM_FUNC_START_PI(memcpy) | ||||
| SYM_FUNC_START_WEAK_PI(memcpy) | ||||
| #include "copy_template.S" | ||||
| 	ret | ||||
| SYM_FUNC_END_PI(memcpy) | ||||
|  | ||||
| @ -45,9 +45,8 @@ C_h	.req	x12 | ||||
| D_l	.req	x13 | ||||
| D_h	.req	x14 | ||||
| 
 | ||||
| 	.weak memmove
 | ||||
| SYM_FUNC_START_ALIAS(__memmove) | ||||
| SYM_FUNC_START_PI(memmove) | ||||
| SYM_FUNC_START_WEAK_PI(memmove) | ||||
| 	cmp	dstin, src | ||||
| 	b.lo	__memcpy | ||||
| 	add	tmp1, src, count | ||||
|  | ||||
| @ -42,9 +42,8 @@ dst		.req	x8 | ||||
| tmp3w		.req	w9 | ||||
| tmp3		.req	x9 | ||||
| 
 | ||||
| 	.weak memset
 | ||||
| SYM_FUNC_START_ALIAS(__memset) | ||||
| SYM_FUNC_START_PI(memset) | ||||
| SYM_FUNC_START_WEAK_PI(memset) | ||||
| 	mov	dst, dstin	/* Preserve return value.  */ | ||||
| 	and	A_lw, val, #255 | ||||
| 	orr	A_lw, A_lw, A_lw, lsl #8 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user