kcsan: add __tsan_mem(cpy|move|set) aliases for clang >= 16
Summary: After https://github.com/llvm/llvm-project/commit/b4257d3bf58c ("[tsan] Replace mem intrinsics with calls to interceptors") intrinsic calls to memcpy, memmove or memset will directly call sanitizer interceptors, e.g. __tsan_memcpy, __tsan_memmove or __tsan_memset. Building GENERIC-KCSAN with clang >= 16 would thus result in link errors similar to: ld: error: undefined symbol: __tsan_memcpy >>> referenced by cam_compat.c:150 (/usr/src/sys/cam/cam_compat.c:150) >>> cam_compat.o:(cam_compat_handle_0x17) >>> referenced by cam_compat.c:151 (/usr/src/sys/cam/cam_compat.c:151) >>> cam_compat.o:(cam_compat_handle_0x17) >>> referenced by cam_compat.c:152 (/usr/src/sys/cam/cam_compat.c:152) >>> cam_compat.o:(cam_compat_handle_0x17) >>> referenced 1692 more times Similar to subr_msan.c, add aliases from the existing kcsan_* versions of these functions to __tsan_* names. Reviewed by: markj MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D39772
This commit is contained in:
parent
4b39a12830
commit
42162fb2fe
@ -301,6 +301,10 @@ kcsan_memmove(void *dst, const void *src, size_t len)
|
|||||||
return __builtin_memmove(dst, src, len);
|
return __builtin_memmove(dst, src, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__strong_reference(kcsan_memcpy, __tsan_memcpy);
|
||||||
|
__strong_reference(kcsan_memset, __tsan_memset);
|
||||||
|
__strong_reference(kcsan_memmove, __tsan_memmove);
|
||||||
|
|
||||||
char *
|
char *
|
||||||
kcsan_strcpy(char *dst, const char *src)
|
kcsan_strcpy(char *dst, const char *src)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user