diff options
| author | Rajiv Singh <rajivperfect007@gmail.com> | 2025-10-26 11:12:22 +0100 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2025-10-26 11:12:22 +0100 |
| commit | fe783d9ff39a31a3b39a7b7bb2c3ffed08b99bf4 (patch) | |
| tree | 289e9108235defc4e80a1bd3675846e64982a149 /lib/libtsan/sanitizer_common/sanitizer_linux.cpp | |
| parent | 67c9d57e2735d4ad9846127d2fa140e61b945ee4 (diff) | |
| download | zig-fe783d9ff39a31a3b39a7b7bb2c3ffed08b99bf4.tar.gz zig-fe783d9ff39a31a3b39a7b7bb2c3ffed08b99bf4.zip | |
tsan: fix cross build for FreeBSD by using direct syscalls instead of libsys
This patch can hopefully be dropped in the future; see #24989.
closes #24885
closes #24896
Co-authored-by: Alex Rønne Petersen <alex@alexrp.com>
Diffstat (limited to 'lib/libtsan/sanitizer_common/sanitizer_linux.cpp')
| -rw-r--r-- | lib/libtsan/sanitizer_common/sanitizer_linux.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/libtsan/sanitizer_common/sanitizer_linux.cpp b/lib/libtsan/sanitizer_common/sanitizer_linux.cpp index 16caf699a4..acb59dfd6b 100644 --- a/lib/libtsan/sanitizer_common/sanitizer_linux.cpp +++ b/lib/libtsan/sanitizer_common/sanitizer_linux.cpp @@ -174,8 +174,6 @@ const int FUTEX_WAKE_PRIVATE = FUTEX_WAKE | FUTEX_PRIVATE_FLAG; # if SANITIZER_FREEBSD # define SANITIZER_USE_GETENTROPY 1 -extern "C" void *__sys_mmap(void *addr, size_t len, int prot, int flags, int fd, - off_t offset); # endif namespace __sanitizer { @@ -265,9 +263,8 @@ ScopedBlockSignals::~ScopedBlockSignals() { SetSigProcMask(&saved_, nullptr); } # if !SANITIZER_S390 uptr internal_mmap(void *addr, uptr length, int prot, int flags, int fd, u64 offset) { -# if SANITIZER_FREEBSD - return (uptr)__sys_mmap(addr, length, prot, flags, fd, offset); -# elif SANITIZER_LINUX_USES_64BIT_SYSCALLS + /* zig patch: use direct syscall for freebsd mmap */ +# if SANITIZER_FREEBSD || SANITIZER_LINUX_USES_64BIT_SYSCALLS return internal_syscall(SYSCALL(mmap), (uptr)addr, length, prot, flags, fd, offset); # else @@ -942,6 +939,11 @@ int internal_fork() { } # if SANITIZER_FREEBSD +int internal_sigaction(int signum, const void *act, void *oldact) { + /* zig patch: use direct syscall for freebsd mmap */ + return internal_syscall(SYSCALL(sigaction), signum, (uptr)act, (uptr)oldact); +} + int internal_sysctl(const int *name, unsigned int namelen, void *oldp, uptr *oldlenp, const void *newp, uptr newlen) { return internal_syscall(SYSCALL(__sysctl), name, namelen, oldp, |
