aboutsummaryrefslogtreecommitdiff
path: root/lib/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp
diff options
context:
space:
mode:
authorRajiv Singh <rajivperfect007@gmail.com>2025-10-26 11:12:22 +0100
committerAlex Rønne Petersen <alex@alexrp.com>2025-10-26 11:12:22 +0100
commitfe783d9ff39a31a3b39a7b7bb2c3ffed08b99bf4 (patch)
tree289e9108235defc4e80a1bd3675846e64982a149 /lib/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp
parent67c9d57e2735d4ad9846127d2fa140e61b945ee4 (diff)
downloadzig-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_libcdep.cpp')
-rw-r--r--lib/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp15
1 files changed, 3 insertions, 12 deletions
diff --git a/lib/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp b/lib/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp
index f5cb85bc1b..1263f307ac 100644
--- a/lib/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp
+++ b/lib/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp
@@ -69,8 +69,6 @@
# undef MAP_NORESERVE
# define MAP_NORESERVE 0
extern const Elf_Auxinfo *__elf_aux_vector __attribute__((weak));
-extern "C" int __sys_sigaction(int signum, const struct sigaction *act,
- struct sigaction *oldact);
# endif
# if SANITIZER_NETBSD
@@ -100,24 +98,17 @@ namespace __sanitizer {
SANITIZER_WEAK_ATTRIBUTE int real_sigaction(int signum, const void *act,
void *oldact);
+/* zig patch: use direct syscall for freebsd sigaction (sanitizer_linux.cpp) */
+# if !SANITIZER_FREEBSD
int internal_sigaction(int signum, const void *act, void *oldact) {
-# if SANITIZER_FREEBSD
- // On FreeBSD, call the sigaction syscall directly (part of libsys in FreeBSD
- // 15) since the libc version goes via a global interposing table. Due to
- // library initialization order the table can be relocated after the call to
- // InitializeDeadlySignals() which then crashes when dereferencing the
- // uninitialized pointer in libc.
- return __sys_sigaction(signum, (const struct sigaction *)act,
- (struct sigaction *)oldact);
-# else
# if !SANITIZER_GO
if (&real_sigaction)
return real_sigaction(signum, act, oldact);
# endif
return sigaction(signum, (const struct sigaction *)act,
(struct sigaction *)oldact);
-# endif
}
+# endif
void GetThreadStackTopAndBottom(bool at_initialization, uptr *stack_top,
uptr *stack_bottom) {