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_libcdep.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_libcdep.cpp')
| -rw-r--r-- | lib/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp | 15 |
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) { |
