This avoids problems when the C linker doesn't want to see the Go relocation.
Fixes #71954
Change-Id: I7cf884c4059d596cad6074ade02020d5a724f20e
Reviewed-on: https://go-review.googlesource.com/c/go/+/652180
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Commit-Queue: Ian Lance Taylor <iant@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
//go:cgo_import_static __msan_write_go
//go:cgo_import_static __msan_malloc_go
//go:cgo_import_static __msan_free_go
-//go:cgo_import_static __msan_memmove
+//go:cgo_import_static __msan_memmove_go
#include <stdint.h>
#include <sanitizer/msan_interface.h>
+extern void __msan_memmove(void*, const void*, uintptr_t);
+
void __msan_read_go(void *addr, uintptr_t sz) {
__msan_check_mem_is_initialized(addr, sz);
}
void __msan_free_go(void *addr, uintptr_t sz) {
__msan_poison(addr, sz);
}
+
+void __msan_memmove_go(void *to, const void *from, uintptr_t sz) {
+ __msan_memmove(to, from, sz);
+}
*/
import "C"
MOVQ dst+0(FP), RARG0
MOVQ src+8(FP), RARG1
MOVQ sz+16(FP), RARG2
- // void __msan_memmove(void *dst, void *src, uintptr_t sz);
- MOVQ $__msan_memmove(SB), AX
+ // void __msan_memmove_go(void *dst, void *src, uintptr_t sz);
+ MOVQ $__msan_memmove_go(SB), AX
JMP msancall<>(SB)
// Switches SP to g0 stack and calls (AX). Arguments already set.
MOVD dst+0(FP), RARG0
MOVD src+8(FP), RARG1
MOVD sz+16(FP), RARG2
- // void __msan_memmove(void *dst, void *src, uintptr_t sz);
- MOVD $__msan_memmove(SB), FARG
+ // void __msan_memmove_go(void *dst, void *src, uintptr_t sz);
+ MOVD $__msan_memmove_go(SB), FARG
JMP msancall<>(SB)
// Switches SP to g0 stack and calls (FARG). Arguments already set.
MOVV dst+0(FP), RARG0
MOVV src+8(FP), RARG1
MOVV sz+16(FP), RARG2
- // void __msan_memmove(void *dst, void *src, uintptr_t sz);
- MOVV $__msan_memmove(SB), FARG
+ // void __msan_memmove_go(void *dst, void *src, uintptr_t sz);
+ MOVV $__msan_memmove_go(SB), FARG
JMP msancall<>(SB)
// Switches SP to g0 stack and calls (FARG). Arguments already set.